Переопределение сеттеров не вызывается в Objective-C - PullRequest
4 голосов
/ 19 июня 2010

Я отлаживаю пример учебного фрагмента и запутался по поводу переопределения сеттеров.

Я объявляю и переопределяю, как показано здесь:

//
//  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 Ответ

13 голосов
/ 19 июня 2010

Он неправильно прописан, и заглавные буквы имеют значение.Это должно быть setNumberOfSides:.

...