好久不看OC代码,今天看代码追到NSObject里的时候忽然发现retainCount是在@protocol NSObject里,而不是在NSObject类里(以前真是大意,这基本的东西几年都没有注意到),protocol里还有@property其他内容,就比较奇怪retainCount的定义是在哪,@property表示什么,网上查了一下,
1.头文件中@property obj myObj;
等效于声明了两个方法
- (obj)myObj;
- (obj)setMyObj:(obj)newObj;
可知@property只是简化了两个协议方法。
2.在实现文件中@synthesize myObj;
等效于在实现文件中实现了两个方法
- (obj)myObj{
return myObj;
}
- (obj)setMyObj:(obj)newObj{
myObj = newObj;
}
我自己测试了一下,如果在实现文件里直接@synthesize myObj;会报错,但是如果实现了一个@property obj myObj;的协议,再在实现文件里@synthesize myObj;就不会报错了,所以猜测,retainCount应该是在NSObject的实现文件里@synthesize retainCount;