Подтвердить что ты не робот

Как инициализировать подкласс NSObject на iPhone?

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Хотя яблочная документация говорит

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

и можно просто соблазнить написать

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

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

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

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

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