重写setter与getter方法以及其使用情况
2015-10-02 20:46
232 查看
1.setter方法:
对成员变量进行赋值,相当于写入操作;是为了从外部类得到一个参数,赋值给内部变量;其函数名必须以set开头,必须有一个参数;
例子:- (void)SetName:(NSString *)newName
{
_name = newName;把外部类传过来参数赋值(写入)给内部变量。
}
2.getter方法:
对成变量进行取值操作,函数必须有返回值,且函数名是内部变量名;
例子:- (NSString *)name
{
return _name;把内部变量返回给调用的地方。
}
3.属性:@property (nonatomic,copy) NSString *name;属性内部自动生成(封装)setter和getter方法。
4.如果变量,属性写在头文件(h文件)中,另一个类可以通过 属性来访问变量,如果写在实现文件(m文件),则只属于当前类,外部内不能访问,可以达到私有变量的目的。
5.关于类之间的循环保留而导致的死循环:如果Car类保留了(拥有)Engine类engine对象(正常情况是这样),但是如果Engine类也保留(拥有)了Car类的car对象,就会导致保留死循环使引用计数器发生故障,因为引用计数器永远不会归零,也不会被释放。除非engine对象释放了car对象,Car类的dealloc方法才会调用,但是car对象的dealloc方法没有调用的话,engine对象也不会释放,他们就一直相互等待对方释放,造成了死循环。所以一般的持有规则是:所有者对象保留被拥有者的对象,反之则不行。
对成员变量进行赋值,相当于写入操作;是为了从外部类得到一个参数,赋值给内部变量;其函数名必须以set开头,必须有一个参数;
例子:- (void)SetName:(NSString *)newName
{
_name = newName;把外部类传过来参数赋值(写入)给内部变量。
}
2.getter方法:
对成变量进行取值操作,函数必须有返回值,且函数名是内部变量名;
例子:- (NSString *)name
{
return _name;把内部变量返回给调用的地方。
}
3.属性:@property (nonatomic,copy) NSString *name;属性内部自动生成(封装)setter和getter方法。
4.如果变量,属性写在头文件(h文件)中,另一个类可以通过 属性来访问变量,如果写在实现文件(m文件),则只属于当前类,外部内不能访问,可以达到私有变量的目的。
5.关于类之间的循环保留而导致的死循环:如果Car类保留了(拥有)Engine类engine对象(正常情况是这样),但是如果Engine类也保留(拥有)了Car类的car对象,就会导致保留死循环使引用计数器发生故障,因为引用计数器永远不会归零,也不会被释放。除非engine对象释放了car对象,Car类的dealloc方法才会调用,但是car对象的dealloc方法没有调用的话,engine对象也不会释放,他们就一直相互等待对方释放,造成了死循环。所以一般的持有规则是:所有者对象保留被拥有者的对象,反之则不行。
相关文章推荐
- 二分图
- LeetCode题解:Convert Sorted List to Binary Search Tree
- 学习ThinkPHP3.2.2:视频第七讲中的U函数
- 130 Surrounded Regions [Leetcode]
- hdu 1429 胜利大逃亡(续)
- java回收机制
- mysql索引失效的情形
- svn命令
- 【Python之旅】第四篇(四):基于面向对象的模拟人生游戏类
- poj 2155 Matrix
- LeetCode题解:Convert Sorted Array to Binary Search Tree
- HTML学习记录<三> :创建电子邮件链接
- 常用host文件,提高访问速度
- Generics and Wildcards in Java
- 学习ThinkPHP3.2.2:几种URL访问方式
- HTML学习记录<二>:标签的 target 属性中的_blank _self _parent _top
- Java学习笔记----匿名对象
- hduacm 5480 Conturbatio前缀和
- python中使用re.sub更换倒数第一个字符串
- ==和equal()的区别