4
我正在調試一個示例教程片段,並對setter的重寫感到困惑。覆蓋setter不被稱爲Objective-C
我宣佈和覆蓋此處,如圖所示:
//
// PolygonShape.h
//
@interface PolygonShape : NSObject
{
int numberOfSides;
}
@property int numberOfSides;
//
// PolygonShape.m
//
@synthesize numberOfSides;
// custom setter.
- (void) setnumberOfSides:(int) i
{
if ((i > minimumNumberOfSides) && (i <= maximumNumberOfSides))
numberOfSides = i;
else
NSLog (@"Number of sides outside limits:\n You entered %d, limits are min.:%d, max.:%d",
i, minimumNumberOfSides+1, maximumNumberOfSides);
}
//
// main.m
//
poly = [[PolygonShape alloc] init];
poly.numberOfSides = 2;
[poly setnumberOfSides:2];
所以,我認爲在這裏想到的是,因爲我「覆蓋」爲numberOfSides
合成的二傳手,然後poly.numberOfSides = 2;
會叫我(void) setnumberOfSides:(int) i
功能。但相反,功能被調用的唯一方法是當我明確做[poly setnumberOfSides:2];
我不明白。那麼壓倒一切的重點是什麼?
或者更可能,我做錯了什麼? ;)
+1方法名稱區分大小寫。 – 2010-06-18 20:39:19
因此,即使我的變量是'numberOfSides'(小號'n'代表「號碼」),綜合功能*會根據自己的目的將其改爲大寫'N'。不錯。 :/ – 2010-06-18 20:43:04
不,@synthesize會將案例更改爲與所有Cocoa中一致的駝峯框架規則完全一致。 'setnumberOfSides:'從來沒有意義。 – bbum 2010-06-18 23:48:25