Ответ 1
Существует ряд концепций, которые составляют основы разработки iOS. Существуют схемы кодирования, методы и некоторые общие лакомые кусочки, о которых вы должны знать.
Шаблоны кодирования:
-
Наблюдение за ключевыми значениями (KVO). Позволяет одному объекту реагировать на изменения других свойств объекта, регистрируя "Наблюдатель" с "целевым" объектом. Подробнее о KVO см. В Apple Руководство по программированию по наблюдению за ключевыми значениями.
-
Шаблон диспетчера моделей Model. В объектах шаблона контроллера модели (MVC) обычно вписываются в одну из трех ролей. У вас есть модель, которая на самом базовом уровне - ваши данные. (Или, точнее, как структурированы данные.) У вас есть представление, которое пользователь видит на экране. Наконец, у вас есть контроллер, который координирует между моделью и представлением. Контроллер - это то, где обычно идет ваша бизнес-логика. Apple также имеет документацию по MVC.
-
Шаблоны Singleton: Singleton (что оксюморон, "singleton classes" ) - это классы, которые могут иметь только один экземпляр из них в приложении за раз. Синглтоны хороши для "factory классов" или объектов, которые вам не нужны. Класс
UIDevice
, например, является одноэлементным классом. (Ваш iPhone не является iPad и iPhone в то же время, не так ли?) В IOS SDK для одноэлементных классов часто используется специальный инициализатор. Вместо обычных[[Class alloc] init]
синглтоны часто используют[SingletonClass sharedInstance]
. ( "общий" экземпляр, поскольку экземпляр "разделен" в вашем приложении.) Обратите внимание, что классы Singleton работают немного по-другому в отношении управления памятью.
Методы кодирования:
-
Делегирование. Многие объекты в SDK iOS имеют объекты-делегаты, которые отвечают определенным "событиям" объекта, для которого они "делегируют". Например, у вас может быть
UIPickerView
(прокручивающееся колесо с множеством вариантов на нем). Когда пользователь выбирает дату, делегат (другой объект, кроме UIPickerView) реализует– pickerView:didSelectRow:inComponent:
, что позволит этому объекту что-то делать в ответ на действие. -
Управление памятью. В отличие от многих языков, будь то Java, Javascript или что-то среднее между ними, обычно управляйте памятью для вас. В iOS Objective-C этого не делает. Вам нужно отслеживать все ваши объекты и освобождать их, когда вы закончите с ними. Эмпирическое правило состоит в том, что для каждого
alloc
,retain
,new
иcopy
у вас должен быть соответствующийrelease
илиautorelease
. ( Заметка об авторекламе: У людей часто возникают проблемы с пониманиемautorelease
. Вообще говоря, локальные "автореализованные" объекты гарантированно будут находиться до конца вызова метода. Конечно, если вы сохраните объект в другом месте, он все равно будет иметь ссылку с этой точки.) -
ARC. С помощью SDK iOS 5 Apple представила автоматический подсчет ссылок. Важно понять, как это работает, даже если вы планируете работать с ручным подсчетом ссылок. Вы никогда не знаете, когда вы столкнетесь с ARCified кодом, с которым вам нужно будет работать.
-
Сохранение данных. Многие люди, которые начинают работу, также имеют проблемы с сохранением данных между запусками. У вас есть три варианта, в зависимости от типа данных. Вы можете использовать NSUserDefaults, каталог документов (или одну из нескольких других папок в иерархии каталога приложений) или Основные данные. Вы также используете их в сочетании друг с другом, поскольку они не являются взаимоисключающими.
Основные понятия:
-
IBOutlets и IBActions:
IBAction
иIBOutlet
являютсяtypedef
дляvoid
.IBAction
методы возвращаютvoid
и помечены какIBAction
, так что Interface Builder может позволить вам присоединить их к объектам в ваших файлах NIB.IBOutlet
являются "заполнителями" кода, которые используются, чтобы позволить вам устанавливать свойства или иным образом взаимодействовать с объектами в ваших файлах NIB с помощью кода Objective-C. -
Символ @: Символ
@
представляет константы Objective-C, так как Objective-C является надмножеством или Framework поверх C. В C строковая константа будет"My string is cool."
. В Objective-C это будет@"My string is cooler in Objective-C."
Другими примерами символа@
, используемого для различения между C и Objective-C, являются ключевые слова, такие как@implementation
,@property
,@class
и@end
. -
Указатели: Дэйв ДеЛонг объясняет это в своем ответе, но это еще что-то, чтобы убедиться, что вы тоже знаете.
Наконец, я оставляю вам совет:
Хотя у вас есть StackOverflow, и это действительно замечательный ресурс, умеет использовать Apple Documentation. Наслаждайтесь путешествием и удачи Начало работы!
Удачи!