资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,ios培训简介ObjectiveC语言,*,ios培训简介ObjectiveC语言,pproach.AddisonWesley.ISBN0-201-54834-8.,优点及缺点,Objective-C,是非常“实际”的语言。它使,用一个用,C,写成、很小的运行库,只会令应用程,序的大小增加很小,和大部分,OO,系统使用极大的,VM,执行时间会取代了整个系统的运作相反。,ObjC,写成的程序通常不会比其原始码大很多。而其函,式库,(,通常没附在软件发行本,),亦和,Smalltalk,系,统要使用极大的内存来开启一个窗口的情况相,反。,Objective-C,的最初版本并不支持垃圾回收。,2,ios培训简介ObjectiveC语言,MacOSX,核心,;,使用“,NS”,是由于这些类别的名称,在,NeXTSTEP,开发时定下。虽然,Objective-C,是,C,的母集,但它也不视,C,的基本型别为第一级的对,象。和,C+,不同,Objective-C,不支援运算子多载,(,它不支持,ad-hoc,多型,),。亦与,C+,不同,但和,Java,相同,Objective-C,只容许对象继承一个类,别,(,不设多重继承,),。,Categories,和,protocols,不,但可以提供很多多重继承的好处,而且没有很多,缺点,例如额外执行时间过重和二进制不兼容。,Objective-C,排行榜,4,ios培训简介ObjectiveC语言,思绪飞奔的黎明,一股股倾斜的香气从不知名的地方飘来,像麦的纯,TIOBE20105,月编程语言榜已于近日发布,本,期主要变化是,Objective-C,排名进入前十。尽管,Objective-C,的份额在上个月只达到,0.08%,但却,在排名上迈出了重要一步,首次进入前十名。,这一步的意义重大,要知道,2001,年,6,月,TIOBE,编,程榜发布以来,总体只有,13,个编程语言曾经进入,前十名。,Objective-C,流行的主要原因可能是它,是唯一一种可以为,iphone,和,ipad,编程的语言。,但单从编程语言的角度来看,诞生于,1986,年的,Object-c,并没有表现出多少新意。,5,ios培训简介ObjectiveC语言,TIOBE2010,年,6,月份编程语言榜已于近日发,布,Objective-C,排名继续爬升,从第,10,名上升到,第,9,名。由此可见,Objective-C,具有很大的发展,空间。,Objective-C,和,C+,的比较,单一继承,:,Objective-C,不支持多重继承,(,同,Java,和,Smalltalk),而,C+,语言支持多重继承。,动态,:,6,ios培训简介ObjectiveC语言,思绪飞奔的黎明,一股股倾斜的香气从不知名的地方飘来,像麦的纯,Objective-C,是动态定型,(dynamicalytyped),所以它的类库比,C+,要容易操作。,Objective-C,在运行时可以允许根据字符串名字来访问方法,和类,还可以动态连接和添加类。,C+,跟从面向对象编程里的,Simula67(,一种,早 期,OO,语 言,),学 派,而,Objecive-C,属 于,Smalltalk,学派。,在,C+,里,对象的静态类型决定你是否可以,发送消息给它,而对,Objective-C,来说,由动态类,型来决定。,Simula67,学派更安全,因为大部分错,7,ios培训简介ObjectiveC语言,误可以在编译时查出。而,Smalltalk,学派更灵活,比 如 一些,Smalltalk,看 来无 误的 程序 拿 到,Simualr67,那里就无法通过。,从很多方面来看,C+,和,Objective-C,的差别,与其说时技术上的,不如说是思维方式上的。你,是否想更安全而舍弃灵活性,?Simular67,学派的,支持者声称既然程序设计出色何必再要灵活性,而,Smalltalk,学派则辩称为了灵活可以容忍运行,时多出错。,Objective-C,简明教程,8,ios培训简介ObjectiveC语言,思绪飞奔的黎明,一股股倾斜的香气从不知名的地方飘来,像麦的纯,前言,开始学习前,假设你已经具备了一些,C,语,言的基础知识,包括变量类型、函数、返回值、,以及指针的相关概念。如果对这些还不了解,建,议首先学习谭浩强的,C,程序设计,。,Objective-C,是,C,的衍生体,继承了所有,C,语言的特性。是有一些例外,但是它们不是继承,于,C,的语言特性本身。,nil:,在,C/C+,你或许曾使用过,NULL,而在,9,ios培训简介ObjectiveC语言,Objective-C,中则是,nil,。不同之处是你可以传,递讯息给,nil(,例如,nilmessage;),这是完全合,法的,然而你却不能对,NULL,如法炮制。,BOOL:C,没 有 正 式 的 布 尔 类 型,而 在,Objective-C,中也不是真的有。它是包含在,Foundationclasses(,基 本 类 别 库,),中,(,即,importNSObject.h;nil,也是包括在这个标头档,内,),。,BOOL,在,Objective-C,中有两种型态,:YES,或,NO,而不是,TRUE,或,FALSE,。,importvsinclude:,就 如 同 你 在,10,ios培训简介ObjectiveC语言,思绪飞奔的黎明,一股股倾斜的香气从不知名的地方飘来,像麦的纯,helloworld,范例中看到的,我们使用了,import,。,import,由,g,编译器支援。我并不建议使用,include,import,基 本 上 跟,.h,档 头 尾 的,ifndefdefineendif,相同。许多程式员们都同意,使用这些东西这是十分愚蠢的。无论如何,使用,import,就对了。这样不但可以避免麻烦,而且万,一有一天,g,把它拿掉了,将会有足够的,Objective-C,程式员可以坚持保留它或是将它放,回来。偷偷告诉你,Apple,在它们的程式码中也使,用了,import,。所以万一有一天这种事真的发生,不难预料,Apple,将会提供一个支援,import,的,g,11,ios培训简介ObjectiveC语言,分支版本。,Objective-C,中,method,及,message,这两,个字是可以互换的。不过,messages,拥有特别的,特性,具体区别在後面介绍。,编译,helloworld,hello.m,import,intmain(intargc,constchar*argv),12,ios培训简介ObjectiveC语言,思绪飞奔的黎明,一股股倾斜的香气从不知名的地方飘来,像麦的纯,printf(helloworldn);,return0;,输出,helloworld,在,Objective-C,中 使用,import,代替,include,Objective-C,的预设副档名是,.m,13,ios培训简介ObjectiveC语言,创建,classe,interface,基,于,ProgramminginObjective-C,Copyright(C)20,04bySamsPublishing,一书中的范例,并经过允许,而刊载。,Fraction.h,import,14,ios培训简介ObjectiveC语言,思绪飞奔的黎明,一股股倾斜的香气从不知名的地方飘来,像麦的纯,interfaceFraction:NSObject,intnumerator;,intdenominator;,-(void)print;,-(void)setNumerator:(int)n;,-(void)setDenominator:(int)d;,15,ios培训简介ObjectiveC语言,-(int)numerator;,-(int)denominator;,end,NSObject:NeXTStepObject,的缩写。因为,它已经改名为,OpenStep,所以这在今天已经不是,那麼有意义了。,继承,(inheritance),以,Class:Parent,表示,就像上面的,Fraction:NSObject,。,16,ios培训简介ObjectiveC语言,思绪飞奔的黎明,一股股倾斜的香气从不知名的地方飘来,像麦的纯,夹 在,interfaceClass:Parent.,中,的称为,instancevariables,。,没,有,设,定,存,取,权,限,(protected,public,private),时,预设的存取权,限为,protected,。设定权限的方式将在稍後说明。,Instancemethods,跟 在 成 员 变 数,(,即,instancevariables),後,。,格,式,为,:scope(returnType)methodName:(parameter,1Type)parameter1Name;scope,有,class,或,instance,两种。,17,ios培训简介ObjectiveC语言,instancemethods,以,-,开,头,classlevelmethods,以,+,开头。,Interface,以一个,end,作为结束。,原生的,HelloWorld,代码,import,intmain(intargc,constchar*argv),NSAutoreleasePool*pool=NSAutoreleas,ePoolallocinit;,18,ios培训简介ObjectiveC语言,思绪飞奔的黎明,一股股倾斜的香气从不知名的地方飘来,像麦的纯,/insertcodehere.,NSLog(Hello,World!);,pooldrain;,return0;,以上是,Xcode,开发环境下默认的,.m,文件内容,就是原生的,HelloWorld,范例代码。,关于,helloworld,的更多扩展内容,19,ios培训简介ObjectiveC语言,在,Objective-C,中,import,和,include,的区,别,在,Objective-C,中,import,被当成,include,指令的改良版本来使用。除此之外,import,确定,一个文件只能被导入一次,这使你在递归包含中,不会出现问题。使用哪一个还是由你来决定。一,般来说,在导入,Objective-C,头文件的时候使用,import,包含,C,头文件时使用,include,。,0c22f3ca,清华大学培训班,20,ios培训简介ObjectiveC语言,
展开阅读全文