现在的位置: 首页 > 综合 > 正文

iOS self.+变量 (setter &getter) 定义 自我总结

2018年05月26日 ⁄ 综合 ⁄ 共 798字 ⁄ 字号 评论关闭

转载说明(谢谢)
http://blog.csdn.net/a21064346/article/details/7839882
点击打开链接

@synthesize season = _season;

- (void)setSeason :( Season *)s {
    // set _season
    //Note, if you want to retain (as opposed to assign or copy), it should look someting like this
    //[_season release];
    //_season = [s retain];
}

- (Season *)season {
    // return _season
}

我来解释一下上面这段代码:
-(void)set+(成员变量第一个字母大写) 这个方法 是 自定义 重写 该成员变量 的  setter 方法
当一个成员变量 以 self.XXX = NNN 的形式赋直的时候:1.若有重写setter XXX成员变量 方法,运行该方法
     2.若无,则会调用 系统默认的 -(void)setXXX方法,[_XXX release],[NNN retain],然后保存到_XXX中

-(Season *)season  以成员变量XXX命名 这个方法是 自定义重写 该成员变量的 getter方法
当我们调用  例如 [NSArray arrayWithObject:self.XXX].若你重写了 getter方法,那么每次调用self.XXX去完成某个语句的时候,都会取出_XXX(例子中为_season)的值 。若没有 重写getter方法,那么系统会默认的调用 一个没有 实例(instance)化的 成员变量去用。当然,它的内存分配空间 是00000.

getter方法,你可以对它实例化,但是不要给它 autorelease或者release,不然会出现多次释放的错误(retain 属性+对应的dealloc中已经施放了一次)。

若有 不足,欢迎补充。 :)

抱歉!评论已关闭.