2015-01-05 1 views
-1

Я новичок в Objective-C, и я нахожу синтаксис действительного кода Objective-C, который трудно понять. Например, все объекты обычно назначаются и инициализируются с использованием MyClass * myObject = [[MyClass alloc] init]; синтаксис. Однако в приведенном ниже примере метод вызывается в классе «NSKeyedArchiver» перед созданием инициализированного объекта этого класса. Такая же ситуация возникает в следующей строке кода, где метод вызывается в «NSUserDefaults» без создания выделенного/инициализированного объекта. Как это возможно?Objective C - Как вызвать методы класса без выделения и инициализации объекта

NSData *bandObjectData = [NSKeyedArchiver archivedDataWithRootObject:self.bandObject]; 
[[NSUserDefaults standardUserDefaults] setObject:bandObjectData forKey:bandObjectKey]; 

Спасибо!

+0

'[ClassName theClassMethodName]' как это делается. Также как статические методы в Java. –

ответ

1

Эти методы называются классами, и они не требуют экземпляра класса, который должен выполняться, потому что они не зависят от фактического экземпляра класса. Вы можете создать свой собственный, предварительно используя метод с знаком + (в отличие от знака a)

Обычно мы используем методы класса, если мы не зависим от экземпляра класса. Таким образом, в ваших примерах класс NSKeyedArchiver не нуждается в том, чтобы сам экземпляр был создан для архивирования данных. Аналогичным образом вы можете получить стандартные NSUserDefaults без создания объекта NSUserDefaults.

Другие типы методов (методы экземпляра) используются, когда самому объекту необходимо изменить его состояние.

+0

спасибо !! Действительно оцените это –

+1

Ваше первое предложение немного неточно: сам класс является фактически объектом. –

+0

Хорошая точка. Отредактировал свой ответ, чтобы ответить на этот вопрос –

 Смежные вопросы

  • Нет связанных вопросов^_^