移动市场是块巨大的迅速的,发展的市场,我看好它。IOS中OC是很重要的语言,通过看《Objective C Programming》,能让我对OC有个大概的了解。为了加深印象,特于此加以总结。
- OC是源于SmallTalk的,起源甚至比C++还早。其直接父系语言为C语言。
- OC通过@interface-@end以及@implementation-@end来实现类声明和定义。
- OC中类一般至少继承与Object类
- OC中所有的类对象必须动态申请,也就是说没有局部变量这么一说。
- OC中类没有所谓的构造函数和析构函数,所以如果一个类中有其他类的数据(动态申请的),那么释放内存就不能依赖析构函数,但可以采用重写-(id) free来实现类中所有数据释放。
- OC中成员变量也有三种访问权限,@public,@protected,@private。但默认的是@protected,而C++中默认是private。
- OC中成员函数只有两种,一种是实例函数,一种是类函数。实例函数就是C++中的Public函数,类函数就是public中的static函数。
- OC中成员函数如果要接受多个参数,则需要每个参数前加冒号(虽然教科书上说参数后加冒号,但就我看来说成参数前加更能让C++Programmer理解)。例如-( int ) Set : ( int ) A : ( int ) B ;每个形参前还可以加一个参数名,并成为函数名的一部分。例如-( int ) Set : ( int ) A And : ( int ) B;在使用时[ classTest Set : 10 And : 12 ]; 起初看起来确实不习惯。。。
- OC中还多了一个id类型,通过测试,id就是指针。32位机器上为4字节。
- OC中多了很多运行时态的机制,其中id的特殊用途,可以通过id类型的变量,调用不同类的同名函数,即使这些类没有任何关系。
- OC可以给已类添加新的函数。@interface classExist( NewMethodGroup )-@end,@implementation classExist( NewMethodGroup )-@end。
- OC可以将让某类A,代替某类B。通过poseAs关键字。例如:[FractionB poseAs: [Fraction class]];此后使用Fraction类时,就转换成使用FractionB了。
- OC还有protocol概念。protocol实际是一组函数,支持改协议的类都应重写这些函数。通过@protocol-@end来声明protocol。类中通过<protocol1,protocol2,...>来表示支持某个协议。如@interface A : Object < NSCopying, NSTransform >-@end表明类A继承与Object类,并支持两个协议(NSCopying, NSTransform )。