没有调用Setter方法

时间:2011-07-10 09:39:46

标签: iphone objective-c

我有这段代码:

·H

int cellsPerRow;

@property int cellsPerRow;

的.m

@synthesize cellsPerRow;

-(void)init {
...
cellsPerRow = 4;
}

-(void)setCellsPerRow:(int)cellsPerRowLocal {
cellsPerRow = cellsPerRowLocal;
....
}

但是没有调用setter方法。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您正在分配变量而不是属性。而不是:

cellsPerRow = 4;

您需要执行以下任一操作:

self.cellsPerRow = 4;

[self setCellsPerRow:4];

前者由编译器转换为后者,因此它们是等价的。

答案 1 :(得分:1)

属性和合成为您创建setter和getter方法。实质上,您所做的实际上是覆盖了首先为您创建的方法。

不要那样做。只需使用点符号,如self.cellsPerRow = cellsPerRowLocal。这会将cellsPerRow ivar设置为cellsPerRowLocal中您想要的任何内容。

在你的头文件中:

int cellsPerRow;

@property (nonatomic, retain) int cellsPerRow;

在您的实施文件中:

@synthesize cellsPerRow;

- (void) inThisMethodYouSetcellsPerRow {

cellsPerRowLocal = ... ;

self.cellsPerRow = cellsPerRowLocal;

}