Как инициализировать подкласс NSObject на iPhone? - PullRequest
18 голосов
/ 02 марта 2009

Я хочу написать несколько методов в классе, чтобы другие классы могли вызывать эти методы, используя [instance methodName:Parameter].

Если класс является подклассом UIViewController, я могу использовать initWithNibName для его инициализации. Но я хочу написать методы в подклассе NSObject *1007*, как я могу его инициализировать?

Ответы [ 2 ]

57 голосов
/ 02 марта 2009

Ифония верна, но он или она не говорит, что вам нужно написать метод init самостоятельно. Ваш метод init должен выглядеть примерно так:

- (id) init
    {
    if (self = [super init])
         {
         myMember1 = 0; // do your own initialisation here
         myMember2 = 0;
         }
    return self;
    }

Хотя в яблочной документации написано

Метод init, определенный в классе NSObject, не инициализируется; он просто возвращает себя.

и можно просто испытать желание написать

- (id) init
  {
    myMember1 = 0; // do your own initialisation here
    myMember2 = 0;
    return self;
  }

это НЕПРАВИЛЬНО и не соответствует тому, что прямо указано в документации:

В пользовательской реализации этого (init) метода вы должны вызывать super назначенный инициализатор, затем инициализировать и вернуть новый объект.

MUST. Не должен, мог, должен и т. Д.

Вы не должны предполагать, что init NSObject не изменится в будущем; ни суперкласс, из которого происходит ваш пользовательский класс.

0 голосов
/ 02 марта 2009

Я считаю, что это может работать:

TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
...