1, a local variable is allocated on the stack, while objects are allocated on the heap.
2, Objective-C中有一个额外的替换标记%@,用于表示对象, 在运行时,此说明符将替换为调用descriptionWithLocale:方法(如果存在)或description提供的对象上的方法的结果
3, self: self is a way to refer to “the object that’s received this message.” ,表示当前接收对象
4,id: to mean “some kind of object.”, It is a pointer to an object, like (NSObject *)
5, 如果初始化不需要参数,则使用new创建对象
6, ==运算符用于测试两个单独的指针是否指向同一个对象, 如果需要测试两个对象是否表示相同的数据,则需要调用类似的方法isEqual:
7, 声明一个局部变量(int , float)之类的,应为是再栈上的内存,所以必须初始化,不然会残留上一次栈内存上的值,这对于对象指针不是必需的,对象分配再堆内存上,编译器将自动将变量设置为nil
int magicNumber = 42; XYZPerson * somePerson;
8, 向nil对象发送消息是完全没有问题的
9,访问nonatomic属性比一个属性更快atomic
10,Objective-C对象的内存是动态分配的(在堆上),这意味着您需要使用指针来跟踪对象的地址
11,__weak: 为了避免指向最初由当前释放的对象占用的内存的危险悬空指针,弱引用将自动设置nil为其对象被释放时
12, unsafe_unretained: 不安全的引用类似于弱引用,因为它不会强引用对象,但如果目标对象被释放,则不会将其设置为nil, 变成悬挂指针(野指针), 向悬空指针发送消息将导致崩溃
13,Categories,类别可用于声明实例方法或类方法,但通常不适用于声明其他属性。避免使用类别方法名称冲突
14,协议可以包括实例方法和类方法的声明,以及属性。与Objective-C类可以从超类继承的方式相同,您还可以指定一个协议符合另一个协议。
网友评论