2011-07-18 2 views
0

В Objective-C в определении подкласса (возможно, в файле интерфейса) можно ли использовать переменную экземпляра (ivar), которая унаследована от суперкласса?Objective-C: Переменная суперэкземпляра в подклассе?

Я хочу сделать это, потому что я определил Ивар суперкласса, как NSObject *session, и я хочу, чтобы бросить Ивар в subclasse к Facebook *session, так что я не должен бросить это каждый раз, когда я отправляю это сообщение это Facebook экземпляры отвечают, но NSObject экземпляров нет.

ответ

2

Там нет никакого способа изменить тип суперкласса переменной интерфейса, одна вещь, которую вы могли бы сделать, это добавить метод геттер, такие как

- (Facebook *) getSession { 

    return (Facebook *)[self session]; 

} 
+1

Я считаю, что это почему 'init' методы динамически типизированных (они объявлены для возврата 'id'). –

+0

Да, я объявил локальную переменную, например, 'Facebook * fbSession = (Facebook *) self.session', но ваш подход более расширяем. Благодаря! – ma11hew28