1.id是一种泛型,可以用来引用任何类型的对象。对象是一种包含代码的struct结构体,id实际上是一个指向结构体的指针。
2.Objective-C运行时(runtime)可以将不同的对象当成隐藏的self参数传递,所以那些对象的实例变量发生更改时,运行时也可以进行相应的更改。
3.直接更改由继承得到的实例变量的值是一种不良的习惯。一定要通过方法或property属性来更改。
4.C++具有多继承性,也就是一个类可以直接从两个或多个类继承而来。但Objective-C不支持多继承。你可以通过Objective-C的其他特性来达到多继承的效果。例如:类别category(扩展行为)和协议protocol(实现多个协议,同样达到扩展行为的目的)。
5.复合通过指针指向对象。这之所以行得通,是因为所有Objective-C对象都使用动态分配的内存。
6.可以在类别中添加属性,但是不能添加实例变量,而且属性必须是@dynamic类型的。添加属性的好处在于你可以通过点表达式来访问setter和getter方法。
7.Cocoa没有任何真正的私有方法。如果你知道对象支持的某个方法的名称,即使该对象所在的类的接口中没有声明该方法,你也可以调用它。
8.像NSString和NSArray这样的类实际上只是一些特殊类的虚假表象。由于init方法可以接收参数,因此它的代码能够检查其接收的参数,并决定返回另一个类的对象可能更适合。例如,我们假设一条字符串肯能是由一段很长的文本组成的,也可能是由一串阿拉伯数字组成的。基于这些情况,字符串初始化函数可能会创建一个不同类的对象(该对象更符合目标字符串的要求),然后返回该对象而不是原来的对象。
《Objective-C基础教程》精髓记录
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 苹果官方文档翻译 《Objective-C语言编程》(Programming with Objective-C) ...
- 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...