[Objective C] property学习笔记

1. 类中定义的@public, @private, @protected只影响继承它的类的访问权限。

2. @property会为变量自动加上getter/setter方法。

3. getter方法:

1 -(id) name
2 {
3 return name;
4 }

4. setter方法:

1 -(void) setName:(id)_name
2 {
3 if (name != _name)
4 {
5 [name release];
6 name = [_name copy];// 设置了copy参数的情况
7 }
8 }

5. @property的copy, retain, assign参数

影响setter函数:

copy: name = [_name copy];    // NSString推荐使用

retain: name = [_name retain];  // 其他object类型推荐使用

assign: name = _name;       // delegate, 基本数据类型(int)推荐使用

6. @property的readonly参数

仅生成getter函数

7. @property的atomic, nonatomic参数

atomic一定程度上保证了getter和setter的线程安全,但不能完全依赖。

nonatomic不保证线程安全,速度快。大多数情况用nonatomic

8. @property的默认参数:

atomic, assign, readwrite

原文地址:https://www.cnblogs.com/every2003/p/2377717.html