在Objective-C中没有调用覆盖的setter

Seb*_*nik 4 setter overriding 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];
Run Code Online (Sandbox Code Playgroud)

所以我的假设是,因为我" 覆盖 "合成的setter numberOfSides,然后poly.numberOfSides = 2;会调用我的(void) setnumberOfSides:(int) i函数.但相反,调用函数的唯一方法是我明确地这样做[poly setnumberOfSides:2];

我不明白.那么压倒一切又有什么意义呢?

或者更可能的是,我做错了什么?;)

Chu*_*uck 13

它资本化不正确,资本化很重要.它应该是setNumberOfSides:.

  • 不,@synthesize将案例更改为与所有Cocoa中一致的camel大小写规则完全一致.'setnumberOfSides:'从未有意义. (7认同)