Подтвердить что ты не робот

Каковы основные понятия для iPhone Developer, чтобы учиться?

Я новичок в Objective-C, и я прошел через многие темы. Каковы ключевые концепции, на которых я должен уделять больше внимания разработке iPhone Apps?

4b9b3361

Ответ 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. Наслаждайтесь путешествием и удачи Начало работы!

Удачи!

Ответ 2

Они не обязательно специфичны для разработки iPhone, но без них вы никогда не получите его.

  • Указатели - знаете, что такое указатель. Знайте, почему нам нужна динамически распределенная память по сравнению с статически выделенной памятью. (Я знаю, это может показаться тривиальным, но, по моему опыту, это первая вещь, с которой сталкиваются новички). Это потому, что вы никогда не будете иметь дело с необработанными объектами в Objective-C. Вы всегда имеете дело с ссылками на объекты. (т.е. вы никогда не имеете дело с NSString, но всегда NSString *). Однако есть вещи, которые похожи на объекты, но на самом деле их нет. NSRect - это структуры, и они могут быть выделены в стек. NSInteger является просто a typedef для примитива int. Если вы не знаете, что такое указатель, вы сойдете с ума, если хотите, чтобы вы ввели *, а когда нет.

  • Управление памятью. iPhone не содержит сборку мусора. Вы должны вручную управлять своей памятью. Примите это и продолжайте. Правила для правил управления памятью в Objective-C тривиальны. Запомните их и всегда помните, чтобы использовать их.

* единственный раз, когда вы будете заниматься объектами, выделенными стекем, будут блоки (^{ ... }) или когда вы делаете что-то дьявольски коварное.

Ответ 3

Для разработки успешных приложений для iPhone вам нужно знать больше, чем обычно предлагаемые рекомендации Objective C. Практики Objective C, знание правил делегирования и правил управления памятью очень важно для разработки iPhone.

В интерфейсе Cocoa Touch есть много и много API-интерфейсов. Чем больше API, с которыми вы знакомы, и играли, тем лучше. Это само по себе может занять значительное количество времени.

Вы должны узнать, что инфраструктура, управляемая событиями, такая как Cocoa Touch в основном вызывает ваше приложение, а не наоборот.

Вы должны узнать, как дизайн пользовательского интерфейса работает по-разному на сенсорных устройствах с крошечными дисплеями. Слишком мало разработчиков видят, могут ли их бабушка (et.al.) носить толстые три фокалы даже увидеть некоторые из своих значков. Или можно управлять ли пользовательским интерфейсом при использовании устройства в одиночку при ходьбе. Etc.

Вы должны научиться разрабатывать для ограниченной системы. У мобильного устройства, вероятно, нет, по-видимому, бесконечного количества резервной памяти. Таким образом, вам нужно научиться измерять и сильно контролировать область памяти приложения. И батарея на маленьком устройстве прослужит намного дольше, если ваши приложения могут оставить процессор в основном бездействующим. Поэтому вам захочется узнать, как профилировать ваши алгоритмы и как выбирать эффективные.

Я предлагаю получить более раннее устройство iOS с более низким сроком службы и научиться правильно работать с приложениями под этими ограничениями. (Я слышал, что Apple использовала это внутренне как часть своего обучения.)