Вызов источника данных суперкласса? - PullRequest
1 голос
/ 30 июня 2011

Я работаю над простым игровым автоматом. Я субклассизирован из UIPickerView. Источник данных PickerView, который мне не нужно определять в моем контроллере, потому что он всегда будет равен 5. Могу ли я определить его в своем подклассе следующим образом?

@interface SlotMachineView : UIPickerView <UIPickerViewDataSource> {

}

@ конец

#import "SlotMachineView.h"

@implementation SlotMachineView

- (id)init{

if ((self = [super init])) {
    super.dataSource = self;
}

return self;
}


- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{

return 5;
}


- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{

return 5;
}

- (void)dealloc
{ 
[super dealloc];
}

@end

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Да, вы можете.Вы также можете просто написать self.dataSource = self, потому что super и self - это один и тот же объект *.Помните, что ваш объект является таким же экземпляром своего суперкласса, как и экземпляром класса, в котором он объявлен.Он имеет все те же свойства и отвечает на все те же сообщения.

* Единственная разница между super и self состоит в том, что super пропускает методы, определенные в текущем классе.

0 голосов
/ 30 июня 2011

Да, вы можете сделать это. Вот и весь смысл протоколов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...