objective-c基础教程(如何正确有效地入门 Objective-C)
各位老铁们好,相信很多人对objective-c基础教程都不是特别的了解,因此呢,今天就来为大家分享下关于objective-c基础教程以及如何正确有效地入门 Objective-C的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
如何正确有效地入门 Objective-C
1、我以为,斯坦福大学IOS公开课不适合入门的同学看,里面第一课讲解的就是MVC模式。对于一个刚入门想要学习的IOS的同学可能就完全懵了,心里想:“我特么第一课都听不懂我后面还学个P啊”。如果以前没接触过面向对象的语言学习的热情肯定大打折扣。
2、我还以为,苹果官方文档的内容虽然权威但example对初学者一点都不友好,而且个人认为中文译文翻译不是令初学者很容易理解。初学阶段,教程的易理解程度我认为是非常重要的一点。
我始终认为保持学习的热情是最重要的。本着这个理念,我推荐的学习方法难度非常低,希望你们能满意。
第一阶段: RayWenderlich网站中的 The iOS Apprentice教程(难度指数:※)
以上有几个答案提到了这个网站,但看什么教程没有细说,我在这里简单说说。The iOS Apprentice的教程针对完全没有编程经验的人设计。这个教程是外国人写的并且有免费试读版,感兴趣的人要看看。里面说的东西都非常非常基本,里面一个共讲解了4个不同类型app,强烈建议一步一步按照上面所写的步骤敲一遍代码。其中你会遇到很多复杂的语句和长的可怕的函数,你不用感到恐慌,照着敲,知道它干嘛用完全OK了,随着你编程时间以及经验的增加,你都会懂得。
附链接:http://www.raywenderlich.com/store/ios-apprentice
注:这个教程是英文原版,并且收费,只免费提供一个app的教程。如果看完了这个免费的教程觉得还挺想继续学的请参考@王寒老师的翻译教程(只有前3个app教程,第4个教程刚出,国内应该还没有人翻译,如果想看只能付费)。PS:(现在开发iOS应用基本都是用Objective-C,至于刚出来的Swift现阶段暂时不推荐学习,如果想了解王寒老师也做了swift版本的The iOS Apprentice教程翻译,自己去找)
附上王寒老师教程下载地址:https://github.com/eseedo/kidscoding
第二阶段:培训班的网络课程及入门书籍
经过第一个阶段你应该已经大致掌握IOS开发流程,能编写一个非常简单的应用了。这时候相信你的热情应该会很高涨,但接下来的学习可能会很枯燥,做好准备。网络课程的话李明杰的课程讲的还不错,其他的也能看。
建议首先要恶补基础知识。经过第一个阶段你可能觉得你懂不少了,但是只是表面,尤其是没学过编程的应该好好学习一下视频前面的课程,主要看看语法。等你看恶心了看烦了就去看视频里UI部分,这里相对于来说比较轻松,一定要把视频里写的语句打一遍,相信这样你理解会更深刻。里面说的不清楚的地方上网可以百度,可以查书(如果你有书的话)。
Q:视频教程是用来做什么的?
A:光有实践没有知识是写不好程序的,第一阶段基本都是实践,第二部分则是用来查缺补漏。之所以推荐网络课程是因为讲解的比较系统,各种入门知识都会涉及。因为iOS所涉及内容庞大单看几本书还是涉及不全的。
Q:上不上培训班?
A:个人意见是不推荐去,自学足够了。现在学习iOS的环境比前几年好太多了,光凭借网上的资料是完全可以的学得很好的,如果你连这点学习能力还没有我也不相信你将来能成为一个很优秀的工程师。而且你会发现在社会上一些互联网公司是拒绝接收培训班出来的人。
推荐入门书籍:
tips:以下所有书籍有英文版看英文版,有最新版看最新版
1、《Objective-C程序设计》(难度指数:※※)
2、《iOS 7应用开发入门经典》(难度指数:※※)
3、《iOS开发指南-0基础到AppStore上架》(难度指数:※※※)
4、《iOS编程实战》(难度指数:※※※※)
这里面讲解的很清楚,后面甚至有简单的项目可以练手,这对于看视频教程看恶心的同学是个福音~你可以先做项目遇到不懂的再看视频。
这里我想多说一句,买iOS开发的辅导书千万别买过时太久的,我看以上有答案还推荐iOS4系列丛书呢...拜托现在都什么年代了,现在iOS8教程都要出来了,你iOS6的教程都过时好久了更别提iOS4了...对于新出的swift语言好多人难以选择不知道该学OC好还是Swift好。我个人建议现在学OC,一门新语言的诞生需要经过时间的考验与洗礼。等你学好了OC以后再看也不迟。
第三阶段及以后
到这个阶段你应该拥有了充分的自学能力,已经达到了入门水平。
首推:Github,StackOverFlow
如果你编程遇到困难,在StackOverFlow上面应该都能找到合适的解答。(前提是你英文不要太差)。Github上好多开源代码足够丰富你的眼界。如果你想成为一个iOS开发者的话这上面两个网站是你经常以及必须会用到的。
想学一点UI的同学可以看:
1、iOS by Tutorials
2、design+code网址:https://designcode.io/
想学applewatch开发的同学可以看:
1、《watchKit》raywenderlich刚推出这个教程,英文版无译文。
进价书单:
1、《Effective Objective-C 2.0》(必看)
2、《Objective-C高级编程 iOS与OS X多线程和内存管理》
3、《iOS开发进阶》
4、《iOS Auto Layout开发秘籍》
转载
如何学习 Objective-C 语言,这方面最好的书有什么
1.推荐Big Nerd Ranch出的《Objective-C编程》Objective-C编程(豆瓣)
这本书适合零基础的读者入门学习,每章的内容并不多,言简意赅,用简单的例子把OC的基本知识娓娓道来,循序渐进。应该是目前最好的零基础入门书。译者翻译也很用心。
2.《Objective-C 2.0程序设计》也不错,可惜出得比较早,已经没卖的了。 Objective-C 2.0程序设计(豆瓣)
3.掌握基本的OC语法后,可以接着阅读Big Nerd Ranch出的《iOS编程》 iOS编程(豆瓣)
这本书也是《Objective-C编程》作者写的,得了2013年Jolt生产力大奖。这儿有蘑菇叔枪文一篇:优质的向导型教程(评论: iOS编程)
最后,别轻信当当和京东上的评论,多数是冲积分写的,不管好书烂书,一律好评。
借用豆瓣网友一句评论:买书先上豆瓣看好评论,有些东西是赚了你的钱还想糊弄你的(评论: Objective-C程序设计)
ios应用开发Objective-C语言简介
Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在gcc运作的系统写和编译,因为gcc含Objective-C的编译器。1980年代初布莱德·确斯(Brad Cox)在其公司Stepstone发明Objective-C。他对软件设计和编程里的真实可用度问题十分关心。Objective-C最主要的描述是他1986年出版的Object Oriented Programming: An Evolutionary Approach. Addison Wesley. ISBN 0-201-54834-8.
优点及缺点
Objective-C是非常“实际”的语言。它使用一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。ObjC写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。 Objective-C的最初版本并不支持垃圾回收。在当时这是争论的焦点之一,很多人考虑到Smalltalk回收时有漫长的“死亡时间”,令整个系统失去功用。Objective-C为避免此问题才不拥有这个功能。虽然某些第三方版本已加入这个功能(尤是GNUstep), Apple在其Mac OS X 10.3中仍未引入这个功能。另一个问题是ObjC不包括命名空间机制(namespace mechanism)。取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。在2004年,在Cocoa编程环境中,所有Mac OS X类别和函式均有“NS”作为前缀,例如NSObject或NSButton来清楚分别它们属于Mac OS X核心;使用“NS”是由于这些类别的名称在NeXTSTEP开发时定下。虽然Objective-C是C的母集,但它也不视C的基本型别为第一级的对象。和C++不同,Objective-C不支援运算子多载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。
Objective-C排行榜
TIOBE 2010 5月编程语言榜已于近日发布,本期主要变化是Objective-C排名进入前十。尽管Objective-C的份额在上个月只达到0.08%,但却在排名上迈出了重要一步——首次进入前十名。这一步的意义重大,要知道,2001年6月TIOBE编程榜发布以来,总体只有13个编程语言曾经进入前十名。 Objective-C流行的主要原因可能是它是唯一一种可以为iphone和ipad编程的语言。但单从编程语言的角度来看,诞生于1986年的Object-c并没有表现出多少新意。
TIOBE 2010年6月份编程语言榜已于近日发布,Objective-C排名继续爬升,从第10名上升到第9名。由此可见,Objective-C具有很大的发展空间。
Objective-C和C++的比较
单一继承:
Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。
动态:
Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
C++跟从面向对象编程里的Simula 67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。
在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objective-C来说,由动态类型来决定。Simula 67学派更安全,因为大部分错误可以在编译时查出。而Smalltalk学派更灵活,比如一些Smalltalk看来无误的程序拿到Simualr 67那里就无法通过。
从很多方面来看,C++和Objective-C的差别,与其说时技术上的,不如说是思维方式上的。你是否想更安全而舍弃灵活性?Simular67学派的支持者声称既然程序设计出色何必再要灵活性,而 Smalltalk学派则辩称为了灵活可以容忍运行时多出错。
Objective-C简明教程
前言
◆开始学习前,假设你已经具备了一些C语言的基础知识,包括变量类型、函数、返回值、以及指针的相关概念。如果对这些还不了解,建议首先学习谭浩强的《C程序设计》。
◆Objective-C,是 C的衍生体,继承了所有 C语言的特性。是有一些例外,但是它们不是继承于 C的语言特性本身。
◆nil:在 C/C++你或许曾使用过 NULL,而在 Objective-C中则是 nil。不同之处是你可以传递讯息给 nil(例如 [nil message];),这是完全合法的,然而你却不能对 NULL如法炮制。
◆BOOL:C没有正式的布尔类型,而在 Objective-C中也不是「真的」有。它是包含在 Foundation classes(基本类别库)中(即 import NSObject.h;nil也是包括在这个标头档内)。BOOL在 Objective-C中有两种型态:YES或 NO,而不是 TRUE或 FALSE。
◆#import vs#include:就如同你在 hello world范例中看到的,我们使用了#import。#import由 gcc编译器支援。我并不建议使用#include,#import基本上跟.h档头尾的#ifndef#define#endif相同。许多程式员们都同意,使用这些东西这是十分愚蠢的。无论如何,使用#import就对了。这样不但可以避免麻烦,而且万一有一天 gcc把它拿掉了,将会有足够的 Objective-C程式员可以坚持保留它或是将它放回来。偷偷告诉你,Apple在它们官方的程式码中也使用了#import。所以万一有一天这种事真的发生,不难预料 Apple将会提供一个支援#import的 gcc分支版本。
◆ Objective-C中, method及 message这两个字是可以互换的。不过 messages拥有特别的特性,具体区别在後面介绍。
编译 hello world
hello.m#importintmain(intargc,constchar*argv[]){printf("helloworld");return0;}
◆输出
hello world
◆在 Objective-C中使用#import代替#include
◆ Objective-C的预设副档名是.m
创建 classe
@interface
◆基于"Programming in Objective-C," Copyright(C) 2004 by Sams Publishing一书中的范例,并经过允许而刊载。
Fraction.h#import@interfaceFraction:NSObject{intnumerator;intdenominator;}-(void)print;-(void)setNumerator:(int)n;-(void)setDenominator:(int)d;-(int)numerator;-(int)denominator;@end
◆NSObject:NeXTStep Object的缩写。因为它已经改名为 OpenStep,所以这在今天已经不是那_有意义了。
◆继承(inheritance)以 Class: Parent表示,就像上面的 Fraction: NSObject。
◆夹在@interface Class: Parent{....}中的称为 instance variables。
◆没有设定存取权限(protected, public, private)时,预设的存取权限为 protected。设定权限的方式将在稍後说明。
◆Instance methods跟在成员变数(即 instance variables)後。格式为:scope(returnType) methodName:(parameter1Type) parameter1Name;scope有class或 instance两种。
◆instance methods以-开头,class level methods以+开头。
◆Interface以一个@end作为结束。
原生的Hello World代码
#importintmain(intargc,constchar*argv[]){NSAutoreleasePool*pool=[[NSAutoreleasePoolalloc]init];//insertcodehere...NSLog(@"Hello,World!");[pooldrain];return0;}
关于hello world的更多扩展内容
在 Objective-C中#import和#include的区别
在 Objective-C中,#import被当成#include指令的改良版本来使用。除此之外,#import确定一个文件只能被导入一次,这使你在递归包含中不会出现问题。使用哪一个还是由你来决定。一般来说,在导入 Objective-C头文件的时候使用#import,包含 C头文件时使用#include。
文章到此结束,希望我们对于objective-c基础教程和如何正确有效地入门 Objective-C的问题能够给您带来一些启发和解决方案。如果您需要更多信息或者有其他问题,请随时联系我们。