上接:
下面记录学习:Write Objective-C Code的心得:
1. Object-C是ANSI C的超集
2. Object-C最大的特点就是动态性(dynamic),很多功能,行为,都是在运行的时候,才知道的,而不是在编译的时候固定的。
3.Object-C对C做出了如下的扩展:
定义了新的类
类Class和实例的方法
方法调用(叫做 消息Messaging)
声明属性(并且自动生成访问函数)
静态和动态的类型
块Block:一段封装好了的代码段,可在任意时刻运行
在语言本身上做出了一些扩展,比如协议protocol和分类category
4.Object-C中创建class的object包括了两步:分配(allocation)和初始化(initialization)
5.Object-C文件的后缀名
(1)头文件
.h和C,C++都是一样的。
(2)源码文件
.m就相当于C语言的.c文件
.mm就相当于C++的.cpp文件。
6.用#import导入头文件(而不是C或C++ 的#include)
#import可以保证同一个文件(永远都)不会被导入多次
7.Object-C中类定义的语法:
8.Object-C中支持动态类型定义,关键字是id,就像js中的var一样。
其实,对此方面的支持,Python做的更好,灵活度更高。用过Python中的dict的,都懂的。
9.Object-C中的对象引用,一定是(用星号*开头的)指针类型变量。
10.Object-C中的方法method,可以理解为属于某个特定对象object范围内所包含的函数function。
给一个对象发送消息,即messaging一个对象,就是调用该对象的那个方法。
Object-C中有两种方法:
(1)实例Instance的方法:很显然,实例的方法,只属于实例。
所以,当你想要调用某个实例的方法之前,当然需要先创建(该对象的)实例。
最常见的就是实例的方法。
(2)类Class的方法:
class的方法的作用域是整个的class。其并不一定需要一个消息的接受者是一个对象的实例。
11.方法的声明的语法如下:
如上,该方法的全名是 insertObject:atIndex:
其中包含了签名关键字(signature keyword)和冒号。
12.[xxx] 其实叫做 消息表达式Message expression。本质上就是方法的调用。
13.类的方法的定义,和对象的方法定义基本一致,唯一不同在意最开始的那个减号"-"变为加号"+"
14.对象包含属性Property。
获得属性的方法叫做getter,方法名为:orginalPropertyName
设置属性的方法叫做setter,方法名为:setOrginalPropertyName
15.Block的语法为:
调用方式为:
int result = myBlock(4); // result is 28
16.protocol
(1)一个protocol定义了一些方法,这些方法可以被很多类所实现,而实现了这些方法的类,未必非要是共同拥有一个父类(superclass)。
protocol定义的方法,与任何的特定的类都是独立的。
protocol定义了一个方法,而这些方法是由其他类负责实现。
如果你的类实现了某protocol所定义的方法,则可以说你的类是符合(conform)该protocol的。
17.Object-C中self类似于C++中的this
下转:
Cocoa的Foundation Framework学习笔记
下面继续记录在此记录其他一些关于Object-C的心得:
1.将Warning看做是Error
如Your Second iOS App – Troubleshooting中所言,Object-C是一种很灵活的语言,即约束很小,所以,很多时候,你在是使用Xcode编译项目的时候,如果发现警告Warning,那么基本上可以将其看作为错误Error。
即需要你将其解决掉,否则,你去运行程序时,十有八九会出错。
2.
转载请注明:在路上 » 【整理】Object-C学习总结