重写setter与getter方法以及其使用情况

来源:互联网 发布:gd32f103c8t6数据手册 编辑:程序博客网 时间:2024/06/05 09:13

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对象也不会释放,他们就一直相互等待对方释放,造成了死循环。所以一般的持有规则是:所有者对象保留被拥有者的对象,反之则不行。


0 0