【iOS Programming: The Big Nerd Ranch Guide】【笔记】1

1.在类中的init的方法里,应该使用_value而不用self.value的形式访问变量,因为初始化正在进行中,对象还没有完成构造,所以不能确定实例变量都能有效的赋值

2.首先特定的init初始化方法需要调用父类的特定init方法,然后其他的init方法都调用这个特定的init方法

如果子类声明的特定init方法和父类的特定init方法不一样,就需要子类覆写(override)父类的特定init方法并调用子类已有的特定init方法

3.在类方法里应该使用self来代替类名,使得他的子类也可以同样的发送消息

+ (instancetype)randomItem

{

  BNRItem *newItem = [[self alloc] initWithItemName:randomName valueInDollars:randomValue serialNumber:randomSerialNumber];

  return newItem;

}

4.Objective-C中的array只能保存OC对象,所以不能添加基础类型和C语音的结构体,可以先将这些数据转化成OC的NSNumber、NSValue、NSData后添加到array中

不能将nil添加到array中,但是可以用NSNull对象,NSNull表示对象已经为nil,一般被用来做特殊操作

[items addObject:[NSNull null]];

5.unrecognized selector sent to instance 0x100117280’ 这个错误表示该实例中没有想要调用的方法

(You sent a message to an object, and the object does not implement that method)

 6.OC中没有命名空间(namespace),而是使用在类名上添加前缀的方式

NS前缀代表NeXTSTEP公司

7.#import and @import

OC会预编译一些系统库并缓存,避免每次在头文件中引用这些库的时候都需要重新编译一次,所以在调用系统库的头文件时可以使用@import Foundation的方式

原文地址:https://www.cnblogs.com/afluy/p/5015408.html