我无法弄清楚为什么我的getter和setter代码不起作用.在一些示例代码中,我正在讨论:
- (NSArray *)sushiTypes { return _sushiRolls; } - (void)setSushiTypes:(NSArray *)sushiRolls { [sushiRolls retain]; [_sushiRolls release]; _sushiRolls = sushiRolls; }
然后在:
- (void)viewDidLoad { [super viewDidLoad]; self.sushiTypes = [[NSArray alloc]initWithObjects:@"...]autorelease]; }
整个过程都有效,但是寿司类型的属性从未被声明过.我(有点)了解它是如何工作的,因为它与setter / getter的工作方式相同,无论它是否合成.
但这是我的代码,我得到一个编译器错误,要求一个属性.我错过了什么?
#import <Foundation/Foundation.h> @interface Temp0 : NSObject { NSNumber *x1; } -(NSNumber *)x1; -(void)setx1:(NSNumber *)x; @end
// #import "Temp0.h" @implementation Temp0 -(NSNumber *)x1 { return x1; } -(void)setx1:(NSNumber *)x { [x retain]; [x1 release]; x1 = x; } -(id)init { self.x1 = [[NSNumber alloc]initWithInt:1]; // Error on this line: // Setter method is needed to assign to object using property assignment Syntax [super init]; } @end