Как инициализировать подкласс NSObject на iPhone?
-
03-07-2019 - |
Вопрос
Я хочу написать несколько методов в классе, чтобы другие классы могли вызывать эти методы, используя [instance methodName:Parameter]
.
Если класс является подклассом UIViewController
, Я могу использовать initWithNibName
чтобы инициализировать его.Но я хочу написать методы в NSObject's подкласс, как его инициализировать?
Решение 2
Я считаю, что это может сработать:
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;
}
Хотя документация Apple говорит
Метод init, определенный в классе NSObject, не выполняет инициализацию;он просто возвращает self.
и можно просто поддаться искушению написать
- (id) init
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
return self;
}
это НЕПРАВИЛЬНО и не соответствует тому, что явно указано в документации:
В пользовательской реализации этого метода (init) вы должны вызвать назначенный инициализатор Super, а затем инициализировать и вернуть новый объект.
ДОЛЖЕН.Не следует, можно, следует и т. д.
Не следует предполагать, что инициализация NSObject не изменится в будущем;ни суперкласс, от которого происходит ваш собственный класс.