有没有办法来定义将上设置属性一样运行setter方法:定义setter方法上的属性设置
我想打电话给
object.something = 0;
与此同时,在对象类我想实现像
- (void)setSomething:(NSInteger)something{
self.something = something;
// some other work too
}
有没有办法来定义将上设置属性一样运行setter方法:定义setter方法上的属性设置
我想打电话给
object.something = 0;
与此同时,在对象类我想实现像
- (void)setSomething:(NSInteger)something{
self.something = something;
// some other work too
}
你想要什么叫做属性。 你在课堂上@接口定义属性,如:
@interface MyClass()
@property (strong, nonatomic) SomeClass *object;
@end
它会自动创建伊娃_object,setter和getter它。 您可以覆盖访问器方法。但是如果你重写setter和getter,你需要合成属性,如:
@implementation MyClass
@synthesize object = _object;
//setter
- (void)setObject:(SomeClass *)object
{
_object = object;
}
//getter
- (SomeClass *)object
{
return _object;
}
//class implementation
@end
@trojanfoe,如果我理解正确,如果你重写两个访问器,实例变量不会被创建。那么,如果你尝试不合成属性并覆盖set和get,在类实现中使用_object ivar将导致编译时错误 – 2014-08-29 07:42:19
@trojanfoe http://imgur.com/cqaG6jy注意到,我已经添加了合成。这就是你没有综合的结果:http://imgur.com/sM64dfj。如果你不覆盖两个访问器方法,你不需要综合属性:http://imgur.com/ru4s4UQ – 2014-08-29 07:53:21
嗯,有趣。我撤回了我的评论。当我覆盖导致混淆的访问器时,我总是提供自己的实例变量。 – trojanfoe 2014-08-29 07:59:16
你可以这样说:
@property (nonatomic, weak, setter = setSomething:) UIImageView *photoImageView;
无论如何,setSomething:是名为something的属性的默认方法。正如评论中指出的那样,你只需要用_some取代self.something。
你似乎拥有它,除了它会是'_something = something;'。 – trojanfoe 2014-08-29 07:25:20