Мне просто интересно, где я должен установить значения переменных для использования во всех моих методах. Например, скажем, в моем .h Я говорю: @property NSString *name;
, а затем синтезируйте его в .m. Где я могу присвоить ему значение, поэтому в моих функциях, например, -(NSString *)changeUsername:(NSString *) changes
и -(void)deleteUsername
, я могу получить доступ к этим данным?Командная строка Objective-C Equivalent ViewDidLoad
ответ
Ну, вы МОЖЕТЕ сделать это в инициализаторе для своего класса, и это будет подход на C++ или, возможно, Java. В объективе-c вы обычно используете ленивую инстанцирование, и лучшее место для этого - в getter для этого свойства.
Если кому-то присваивается значение, которое вызывается сеттером, и все в порядке. Если кто-то запрашивает значение, и он еще не установлен (равен нулю), вы можете создать объект и/или присвоить значение по умолчанию в getter.
// Override accessor for name
- (NSString*)name
{
if (!_name) {
_name = @"unknown";
}
return _name;
}
Методы доступа - это единственное место, где вы должны напрямую обращаться к переменным экземпляра.
Является ли этот инициализатор первым или в основном файле, я должен его вызвать перед любыми другими методами этого класса? – pasawaya
Когда вы создаете свой объект (с main.m или где угодно), вы обычно вызываете его инициализатор, по умолчанию называемый init. Ex. MyClass * myclass = [[MyClass alloc] init]; Геттер для вышеприведенного свойства не будет называться до тех пор, пока он не понадобится, что быстрее. – Patrick
никогда не будет. Я посмотрел на эту ссылку [http://stackoverflow.com/questions/10739726/when-to-use-lazy-instantiation-in-ios], и теперь я понимаю. благодаря – pasawaya
main()
- это первое, что вызывается в командной строке. Разве вы не сделали бы это там (или где-нибудь звонили от main()
)?
Поскольку вы говорите о свойствах, у вас должен быть класс, который вы создаете. Назначенный инициализатор этого класса (-init
или аналогичный) является правильным местом для настройки ваших свойств и/или переменных экземпляра.
Единственная причина, по которой приложения Cocoa Touch отложить некоторые теги инициализации до -viewDidLoad
, заключается в том, что диспетчеры представлений не загружают свои представления при их инициализации, а некоторые свойства или ivars связаны с представлениями, которые будут загружены. Эти вещи явно не могут быть настроены до тех пор, пока представление не будет загружено (или создано), поэтому -viewDidLoad
станет лучшим местом для создания таких вещей.
- 1. Командная строка, если командная ошибка
- 2. разбития командная строка
- 3. Командная строка VLC - Transcode
- 4. Командная строка Алфавитный порядок?
- 5. Windows Командная строка PHP
- 6. Перенаправление IIS - командная строка
- 7. Python - закрывается командная строка
- 8. Node.JS Командная строка
- 9. Isabelle2016 и командная строка
- 10. Командная строка qustion
- 11. Командная строка на Затмении
- 12. Командная строка SQL
- 13. Командная строка не выходит
- 14. Командная строка коверкая весело
- 15. Командная строка lucene app
- 16. Командная строка Копирование
- 17. Julia - Двойная командная строка
- 18. Командная строка Python run
- 19. Командная строка Svn
- 20. Командная строка less.watch()
- 21. Командная строка: установка шрифта
- 22. VS2008 Командная строка + Cygwin
- 23. слишком длинная командная строка
- 24. Командная строка Perforce
- 25. Командная строка не появляется
- 26. Командная строка Java HelloWorld
- 27. Командная строка командных файлов
- 28. Командная строка Возврат пустой
- 29. Командная строка, медленное выполнение
- 30. Командная строка Аргумент
Это какао-приложение? Вы можете попробовать: -applicationDidFinishLaunching: '. – paulmelnikow