1.在看stanford的IOS7开发视频的时候,发现教授在声明属性@property之后,并未在implementation中添加@synthesize语句而合成存取方法,但是可以直接在代码中 使用存取方法,所以很困惑。 本书提到 原来在Xcode4.5以后的版本中,可以不必使用@synthesize了。另外如果没有指定实例变量,编译器会自动帮我们创建。
2. 在实例变量声明可以放在头文件.h,或者实现文件.m。两者的区别是:放在头文件里的变量,该类的子类可以直接通过属性来访问变量,而放在实现文件里的,只属于当前类。
3.关于对象初始化方法中的 if (self = [super init ]) : 这个声明中最先运行的代码是[ super init] ,其作用是让父类完成其自身的初始化工作。对于继承了NSObject的类来说,调用父类的init方法可以让NSObject执行它所需的所有操作,以便对象能够响应消息,并处理引用计数器。而对于从其他类继承的类,通过这种方法可以实现自身的全新初始化。init可能会返回完全不同的对象。self参数是通过固定的距离寻找实例变量所在的内存位置的。如果从init方法返回一个新对象,则需要更新self,以便其后的实例变量的引用可以正确的内存位置。