OC

Knowledge OS
主帖 13 条回复

arc里面怎么重载set方法?

freecunix freecunix · 2013年12月11日 · 阅读 4 · 无人欣赏。

比如有: @property(strong, nonatomic)Myobject *obj;

重载这样写就行了吗?会不会有引用计数的问题?_obj也能自动加引用计数呀? - (void)setObj:(Myobject *)obj { _obj = obj; }

回复

13 条
#2
zhangmeteor
2013年12月11日

自己重写我感觉不会自己增加引用计数把。。。仅仅是猜想。。没实践过。。

#4
terryso
2013年12月11日

2楼 @zhangmeteor _obj = obj 这样写在ARC下是会增加引用计数的。 因为 id _obj = obj 在ARC下,其实等于 id __strong _obj = obj,这是会引用计数+1的。。。如果你不想引用计数+1,必须显示声明__weak。例如: id __weak _obj = obj,这样就不会+1。

#5
megan
2013年12月11日
  1. @synthesize userId = _userId;
- (void)setUserId:(NSString *)userId

{ if (![_userId isEqualToString:userId]) { _userId = userId;

    [[NSUserDefaults standardUserDefaults] setObject:_userId forKey:@"userId"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

}

  • (NSString *)userId { if (!_userId) { _userId = [[NSUserDefaults standardUserDefaults] objectForKey:@"userId"]; } return _userId; }

// 当然这里userdefault不是必要的。我这里是需要存起来。你可以根据需要修改代码。

@tinyfool 强烈建议增加插入代码功能,这里代码好乱

本帖有13个回复,因为您没有注册或者登录本站,所以只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。
登录 或者 注册
顶楼 / 底楼 / 首页