由NSObject学到的一点基本知识
2015-12-14 18:18
465 查看
好久不看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;
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;
相关文章推荐
- object-c(oc)内存管理机制详解
- 关于PinnedHeaderExpandableListView使用的时候on a null object reference
- Java Socket编程中使用ObjectOutputStream 和 ObjectInputStream 出现问题
- [转]在 Ubuntu 中使用 GNUstep 搭建 Objective-C 开发环境
- Objective-C 引用计数:不讲用法,只说原理
- 借鉴 C# 关于 LINQ 的设计思想用 C++ 11 来实现 LINQ to Object
- Objective-C AES128 Encrypt And Decrypt
- Android属性动画的学习_ObjectAnimator
- WaitForSingleObject 结束线程
- Objective-C Runtime
- 黑马程序员---Java基础---Object类
- android JSON获取值String无法转换成JSONObject
- IOS NSString 截取,objectAtIndex,rangeOfString,stringWithContentsOfFile,NSEnumerator
- html之object标签的classid收集
- Objective-C路成魔【18-复制对象】
- Objective-C 汤姆猫动画实现
- Objective-c语言_对可变字符串操作的常用方法
- Objective-c语言_对字符串操作的常用方法
- Objective-c语言_基本数据类型封装和拆包
- JSON中JObject和JArray,JValue序列化(Linq)