有沒有辦法來定義將上設置屬性一樣運行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