object-c定义属性与成员变量的区别
2015-12-14 21:33
555 查看
object-c定义属性与成员变量的区别:
1、关于@synthesize object = _object:我们经常这样写:
@interface Class:NSObject{ NSString *_name; } @property(nonamtic, copy) NSString *name; @end @implementatin Class @synthesize name=_name;
像这样的写法最关键的是避免一些错误
我们都知道,关键词@property和@implementatin是为成员变量自动实现getter和setter方法,例如上面代码
如果写@synthesize name=_name时getter方法为:
-(NSString *)name { return _name; }
如果写@synthesize name时getter方法为:
-(NSString *)name { return name; }
这样就使得函数名和属性名重名,会出现意想不到的错误,所以为了避免这种Bug,我们多数采用第一种方式。
2、属性是用self.object,通过getter方法来调用的,可以在类外使用。而变量是通过指针_object来调用,只能在该类对应的implementation中使用,在类外不能使用。
3、对于retain修饰的属性,属性可以起到内存管理功能。
相关文章推荐
- Objective-C 数组一 "不可变数组"
- 【转】Objective-C Runtime 消息机制
- IOS开发之NSDictionary里setValue:forKey与setObject:forKey、objectForKey与valueForKey的差异
- Java Object Model(一)
- 由NSObject学到的一点基本知识
- 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-复制对象】