您可以使用自定义的 getter 和 setter 编写一个附加属性,该属性执行您自己的操作,然后访问 @synthesized 属性,如下所示:
富.h:
@interface Foo : NSObject
{
int bar;
}
@property int bar;
@property int bar2;
@end
Foo.m:
#import "Foo.h"
@implementation Foo
@synthesize bar;
- (int) bar2
{
NSLog(@"getter");
return self.bar;
}
- (void) setBar2:(int)newBar
{
NSLog(@"setter");
self.bar = newBar;
}
@end
然后你的代码:
Foo *foo = [[Foo alloc] init];
foo.bar2 = 1;
foo.bar2 += 2;
[foo release];
因此,您将使用“bar2”作为您的属性,但您可以从 @synthesized 条中获得所有细节。bar 中的任何内容都将以线程安全的方式设置/获取,而 bar2 中的任何其他逻辑都不会(这对您来说可能无关紧要)