может не реагировать на предупреждение initWithStyle: в Xcode 4.2

Я довольно давно использую класс CPLockController. Но после обновления до Xcode 4.2 я получаю следующее предупреждение:

'CPLockController' may not respond to 'initWithStyle:'

везде, где эта строка находится в коде:

CPLockController *lockController = [[CPLockController alloc]initWithStyle:(UITableViewStyle)CPLockControllerTypeAuth];

Реализация в файле CPLockController.m:

- (id)initWithStyle:(CPLockControllerStyle)theStyle {
    if(self == [super init]){
        self.style = theStyle;
        self.retry = NO;
        self.tempString = [NSMutableString string];
        self.hideCode = YES;
    }

    return self;
}

и определение типа CPLockControllerStyle:

typedef enum {
CPLockControllerTypeAuth,
CPLockControllerTypeSet
} CPLockControllerStyle;

Я даже создал вопрос в github, но до сих пор нет ответа!

Пожалуйста, помогите... спасибо!


person BufferStack    schedule 20.10.2011    source источник


Ответы (1)


Это потому, что разработчик не объявил -initWithStyle: в объявлении класса. Если вы проверите CPLockController.h, -initWithStyle: там нет.

Я не уверен, почему разработчик этого не сделал (может быть, он забыл, в таком случае вам следует написать об ошибке), но вы можете легко добавить объявление в CPLockController.h следующим образом:

@interface CPLockController : UIViewController <UITextFieldDelegate> {
    // Bunch of ivars
}

// Bunch of properties

- (void)setTitle:(NSString *)title;
- (id)initWithStyle:(CPLockControllerStyle)theStyle; // <-- add this line
@end
person Community    schedule 20.10.2011
comment
Спасибо... но теперь предупреждение меняется на warning: implicit conversion from enumeration type 'UITableViewStyle' to different enumeration type 'CPLockControllerStyle' [-Wconversion,3] - person BufferStack; 20.10.2011
comment
@Tajar Это потому, что вы явно привели его к (UITableViewStyle). Уберите этот слепок. - person ; 20.10.2011
comment
Спасибо! Супер эксперт помогает супер нубу! - person BufferStack; 20.10.2011