Почему представление UIViewController не вводится как id? - PullRequest
0 голосов
/ 11 февраля 2011

Мне всегда было жаль, что представление UIViewController явно напечатано как UIView, потому что подклассы контроллера имеют свои собственные типы представлений и должны преобразовать UIView в правильный тип:

@interface MyController : UIViewController {}
@implementation MyController

- (void) viewDidLoad {
    [(MyView*)self.view doThisOrThat];
}

// Or define a custom accessor:
- (MyView*) myView {
    return (MyView*) [self view];
}

Это кажется глупым. Если бы вид UIViewController был напечатан как id, мы могли бы уйти без кастинга. Поскольку контроллеры представления созданы для создания подклассов, это может показаться естественным выбором дизайна. Какие бы были недостатки? (Или есть более простой способ преодолеть явные проблемы с типом представления?)

1 Ответ

1 голос
/ 11 февраля 2011

Использование id только потому, что оно позволяет вам вызывать любой метод без предупреждения компилятора, на мой взгляд, плохая идея. Вы можете легко вызвать метод, который не определен даже в вашем подклассе представления, без какого-либо предупреждения во время компиляции, что впоследствии приведет к сбою.

Я бы сделал еще IBOutlet MyView* myView и подключил бы мой взгляд не только к view, но и к myView.

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