在属性集上定义setter方法

时间:2014-08-29 07:22:42

标签: ios objective-c xcode

有没有办法定义一个setter方法,该方法将在设置如下属性时运行:

我想打电话

object.something = 0;

同时在对象类中我希望实现像

这样的东西
- (void)setSomething:(NSInteger)something{
    self.something = something;

    // some other work too
}

2 个答案:

答案 0 :(得分:3)

你想要的是财产。 你在类@interface中定义属性,如:

@interface MyClass()
@property (strong, nonatomic) SomeClass *object;
@end

它会自动为它创建ivar _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

答案 1 :(得分:0)

你可以这样做:

@property (nonatomic, weak, setter = setSomething:) UIImageView *photoImageView;

无论如何,setSomething:是名为something的属性的默认方法。你只需要用_something替换self.something,如评论中所指出的那样。