Ps. 在写本篇文章时,本人已学过c、c++,c#也有略微接触,所以oc的学习心得,也是以已学的为基础,来总结。
1、#include 变 #import;printf 变 NSLog;别漏了,还有一个@,写helloworld的感触,变化不大,还能适应。
2、bool类型,NO为0,YES为1。
3、撇掉函数的概念,用类的方法来命名。类和类的方法格式为
@interface ClassName
{
}
- (type) FunctionName:(type) para1 (type) para2;
@end
@implementation ClassName
{
}
- (type) FunctionName:(type) para1 (type) para2
{
}
@end
4、实例化对象和调用方法,为
id object = [ClassName new];
[object FunctionName:para1 para2];
5、继承。
@interface ClassName:ClassName
奇怪的是,oc不支持多继承。
子类调用超类方法时,用[super a];
但如果要调用超类的超类的方法,就纠结了,一个啰嗦的方法是在超类的方法里面调用超类的超类的方法,但这明显比C++还复杂。但也有人说这样的话,不如不要这么继承,而是复合那两个超类。
6、引用
如果在类定义中通过复合的方式,来引用其他类,那么oc支持一种全新的方式,@class ClassName,通过这样,告诉编译器这个类是真正存在的。而如果是继承某个超类,就无法用这种方式了,还是要#import,因为编译器需要知道该超类的所有定义信息,然后去检查子类继承是否有错。