Как я могу установить подкласс для свойства, которое является суперклассом в obj-c? - PullRequest
0 голосов
/ 13 января 2012

Рассмотрим следующую реализацию нескольких классов:

.h реализации файлов трех разных классов

//superClass.h
...
@interface superClass

//Insert useful code

@end

//subClass.h
...
@interface subClass : superClass

//Insert useful code

@end

//Another class that uses various sub-classes of superClass
@interface anotherClass
{
    superClass* myObj;
}
@property (strong, atomic) superClass* myObj;

@end

.m реализация файла anotherClass

@implementation anotherClass

@synthesize myObj;

...
//All of the code that uses the myObj property...
...

@end

Как мне установить экземпляр subClass на экземпляр свойства anotherClass.myObj?

В моем конкретном случае я хотел бы определить свойство, которое является UIViewController. У меня есть несколько подклассов, UIViewControllers, и я должен иметь возможность обменивать их на определенные свойства в моем приложении iOS.

Каждый раз, когда я пытался установить один из моих дочерних UIViewControllers в свое свойство UIViewController, приложение вылетало. Однако, если я переопределю свойство как экземпляр одного из дочерних классов, а затем создаю экземпляр подкласса, это работает отлично. Мне действительно нужно иметь возможность менять и менять эти контроллеры. Как я могу это сделать?

UPDATE

Ну, извините всех, кто смотрел на это. Получив очевидный ответ, я решил переписать весь связанный код. Я создал новое свойство с другим именем, закомментировал весь свой код назначения и переписал его, чтобы указать новое свойство. Работает так, как должно. Я не уверен, почему это не сработает в первый раз, но теперь оно ведет себя так, как должно. Однако я до сих пор не понимаю, почему мое приложение зависало.

1 Ответ

1 голос
/ 13 января 2012

Просто сделай задание.Каждый экземпляр subClass также является экземпляром superClass.Это полиморфизм подтипа в действии.

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