Ответ 1
Я считаю, что это может сработать:
TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
Я хочу написать несколько методов в классе, чтобы другие классы могли вызывать эти методы с помощью [instance methodName:Parameter]
.
Если класс является подклассом UIViewController
, я могу использовать initWithNibName
для его инициализации. Но я хочу написать методы в подклассе NSObject, как я могу его инициализировать?
Я считаю, что это может сработать:
TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
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 не изменится в будущем; ни суперкласс, из которого вызывается ваш пользовательский класс.