пятница, 28 декабря 2012 г.
Ссылки и статьи для iOS-программистов
Моя страница в Evernote, куда я сохраняю различные ссылки и фрагменты статей, интересующие меня как iOS-разработчика
четверг, 1 ноября 2012 г.
Как отключать все вызовы NSLog для release-сборки
Опыт показывает, что перед release-сборкой очередной версии (для
отправки в AppStore) комментировать десятки или даже сотни отладочных
выводов в консоль слишком утомительно, да и не всегда полезно (некоторые
выводы в консоль могут ещё пригодиться). Добавьте удобную макрофункцию
где-нибудь в общий заголовок проекта (который включаете почти везде,
например пусть это будет AppMacros.h).
#ifdef DEBUG
#define DLog(f, ...) NSLog(f, ## __VA_ARGS__)
#else
#define DLog(f, ...)
#endif
Теперь с помощью Find and Replace замените все NSLog на DLog. Если в некоторых исходниках вылезут ошибки компиляции, то добавьте в эти исходники #include "AppMacros.h"
#ifdef DEBUG
#define DLog(f, ...) NSLog(f, ## __VA_ARGS__)
#else
#define DLog(f, ...)
#endif
Теперь с помощью Find and Replace замените все NSLog на DLog. Если в некоторых исходниках вылезут ошибки компиляции, то добавьте в эти исходники #include "AppMacros.h"
суббота, 4 февраля 2012 г.
О важности IBOutlet прикрепления объектов к объекту-хозяину
Очень важно, если вы решили часть рутинных операций возложить на такой удобный инструмент как Interface Builder не забывать об одном правиле. Каждый объект, который создаётся не динамически в коде (например smthObject = [[SmthClass alloc] initWith... ]), а создан с помощью Interface Builder, каждый такой объект должен иметь своего хозяина (разве что главный делегат приложения гарантированно работает по умолчанию).
То есть любой ваш объект (созданный с помощью Interface Builder) должен принадлежать кому-нибудь как IBOutlet-переменная. Я убеждался в этом уже много раз на практике. Иначе происходят падения программы при попытке заставить этот объект что-либо сделать, из-за того, что у этого объекта (если он не принадлежит никому как IBOutlet-переменная) например вызывается метод, а объект вроде не существует (раз ни к кому не принадлежит). Может быть гуру-программисты дадут более точное объяснение этому явлению...
То есть любой ваш объект (созданный с помощью Interface Builder) должен принадлежать кому-нибудь как IBOutlet-переменная. Я убеждался в этом уже много раз на практике. Иначе происходят падения программы при попытке заставить этот объект что-либо сделать, из-за того, что у этого объекта (если он не принадлежит никому как IBOutlet-переменная) например вызывается метод, а объект вроде не существует (раз ни к кому не принадлежит). Может быть гуру-программисты дадут более точное объяснение этому явлению...
Подписаться на:
Сообщения (Atom)