一个app由许多的objects组成,这些object是objective-c类的实例,或者是cocoa 或cocoa touch类的实例。
class定义了某种特定类型的objects所共同具有的property和behaviors. 一个类由两个文件组成:interface和implementation
class 的继承:当一个类从别的类继承时,该类继承了父类的所有的属性和行为,子类可以对父类的方法进行重写或自己添加子类所独有的方法
NSObject是所有类的基类
一个类本身就是一个对象,他的类型是class.
Object在用以前需要先创建,分配内存区存储,对object的property做适当的初始化
通常调用alloc和init方法来初始化一个对象
用variables去追踪values,local variable:定义在函数或方法内的变量
用variable pointers去追踪objects,objects通常存在的时间比variable的存在时间长
dynamic nature:在objective-c中指针所指向的对象的类型是不确定的,但正确的方法总是被调用。这是objective-c的动态的特性
比较两个objects的是否相等:
用 == 决定两个值是否相等
用 == 决定两个指针是否指向同一个object
比较两个objects是否具有相同的data,用isEqual method
比较两个objects那个data大,用compare method
在声明标量变量时通常需要初始化他
但是对于指向某类对象的指针,他有一个默认值nil.表示没有指向任何对象
类用property去封装data,用获取方法对property的data进行操作,可以指定property的attribute: readonly,等,也可以指定获取方法的名字
在初始化方法中直接用instance variable
如果重写了一个property的setter和getter方法,需要手动synthesize 一个instance variable.
用对象与对象之间的关系来管理对object的lifecycle
在objective-c中,一个object存在于memory中,那么至少有一个strong reference指向这个对象
可以用category添加方法到已经存在的类
在ClassName+CategoryName.h中
@interface ClassName (CategoryName) |
|
@end |
import ClassName+CategoryName.h
@implementation ClassName (CategoryName)
@end
在用category添加方法时,要避免方法名与original class的方法名冲突
为了使得代码更具有重用性,用protocol
在interface中
@protocol ProtocolName 〈anotherProtocol>
// list of methods or properties
@end
协议也能够从别的protocols继承
block在invoke之前需要声明和定义