ПРОГРАММИРОВАНИЕ ПОД IPHONE, IPAD OBJECTIVE-C Часть 1

1. Введение

Переход с Xcode 4.1 на 4.2

С выходом новой версии Xcode претерпел некоторые изменения:

Xcode 4.1

Xcode 4.2

Названия шаблонов

 

Xcode 4.1 Xcode 4.2
Navigation-based Application Master-Detail Application
OpenGL ES Application OpenGL Game
Split View-based Application Page-Based Application
Tab Bar Application Tabbed Application
Utility Application Utility Application
View-based Application Single View Application
Window-based Application Empty Application

Эти знавания следует учитывать при прочтении уроков.


 

Кроме этого, при создании проекта появились две новые галочки и одно поле:

Class Prefix — это имя префикса классов, если при создании все оставить как на картинке — имена всех классов будут начинатся со слова Imaladec.

Use Storyboard — эта галочка включает новую функцию Xcode Storyboard. Эта функция создана для облегчения и ускорения построения интерфейса. То есть, вместо xib-файлов в проекте будет один MainStoryboard.storyboard файл (работает только в iOS 5.0 или выше). (подробнее об этом будет написан отдельный урок)

Use Automatic Reference Counting (ARC) — это технология автоматического подсчета ссылок. Проще говоря, вам теперь не нужно будет заботиться об удалении объектов и очистке памяти (работает только в iOS 4.2 или выше).


 

При добавлении нового класса в проект его имя указывается в том же окне, где и родитель.


 

Некоторые особенности написания кода

Если раньше вы уберали верхний контроллер таким образом:

<code data-result="[object Object]">[self.parentViewController dismissModalViewControllerAnimated:YES];</code>

То теперь это следует делать так

<code data-result="[object Object]">[self dismissModalViewControllerAnimated:YES];</code>

 

Для вызова метода у делегата следующея конструкция будет выдавать варнинг (с включенной ARC)

<code data-result="[object Object]">[delegate performSelector:successSelector withObject:self];</code>

Это связано с тем, что селектором может быть сообщение retain или release. Если вы уверены, что передаваемый селектор не содержит эти сообщения — вы можете проигнорировать это предупреждение. Или указать селектор явно:

<code data-result="[object Object]">[delegate performSelector:@selector(didFinish:) withObject:self];</code>

В случае невозможности явного указания селектора можно воспользоваться следующей конструкцией:

<code data-result="[object Object]">objc_msgSend(delegate, successSelector, self);</code>

Но в класе, который использует такой метод следует импортировать message.h:

<code data-result="[object Object]">#import &lt;objc/message.h&gt;
<!--nextpage--></code>

Основы программирования

Свою первую статью я хотел бы написать о самом процессе программирования. Те правила, которые я опишу применимы не только кObjective-C, но и к любому другому языку программирования.

Программирование — в обычном понимании, это процесс создания компьютерных программ. Такое определение избыточно для обычного пользователя, но не для нас с вами… В наше время не достаточно писать программу, которая просто будет выполняться без ошибок. Код должен быть качественным, он должен быть чистым. Код должен читаться как журнал, как обычная газета, он должен быть понятен. Самая надежная метрика качественного кода: количество «чертей» в минуту.

1. Имена
Нет худшей причины для выбора имени «с», чем та, что имена «а» и «b» уже заняты. Мы присваиваем имена переменным, функция, классам, каталогам. Нас окружают имена. Но то, что делается так часто — должно делаться хорошо. Будет неправильно, если вы назовете мальчика женским именем, или наоборот. Но почему же некоторые программисты поступают именно так?
Имя переменной, функции или класса должно отвечать почему эта переменная (и т.д.) существует, что она делает и как используется. Если имя требует дополнительных комментарий, значит оно не полноценно.
int d;
Имя d не передает абсолютно ничего.
int elapsedTimeInDays;
int daysSinceCreation;
int fileAgeInDays;
Содержательные имена существенно упрощают понимание и читаемость кода. Не стоит дописывать к имени переменной ее тип.
NSArray *itemsArray;
Избегайте остроумия. Если ваши имена будут слишком остроумными — их смысл будет понятен только людям, разделяющим чувство юмора с вами — и только, если они помнят шутку.
Если в какой-то момент вы поняли, что знаете как лучше назвать ту или иную переменную — не бойтесь ее переименовывать, в Xcodeдля этого есть удобная функция под названием «Refactor«.

2. Функции
Первое правило любой функции: функция должна быть компактной. Второе правило: функции должны быть еще компактнее. В функции не должно встречаться дублирующегося кода. Дублирование иногда считается корнем всего зла в программировании.
Функция должна выполнять одну операцию. Если функция имеет мя addView — она не должна делать ничего кроме добавления вьюва. Старайтесь на нагромождать функцию аргументами (в идеальном случае количество аргументов должно быть равно нулю).

3. Комментарии
Ничто не помогает так, как уместный комментарий. Ничто не загромождает код так, как бессмысленный комментарий. Ничто не приносит столько вреда, как старый, утративший актуальность комментарий, распространяющий ложь и дезинформацию. Комментарий — всегда признак неудач. Мы вынуждены использовать комментарии, потому, что нам не всегда удается выразить свои мысли без них, однако гордиться здесь нечем. К примеру вы написали функцию, вы прокомментировали ее название и то, что она делает. По истечению некоторого времени вы изменили эту функцию, потом кто-то после вас ее изменил. Но изменяет ли при этом кто-то комментарий? В результате таких преобразований комментарий перестает объяснять то, что делает эта функция, он становиться разносчиком дезинформации.
Давайте рассмотрим пример еще одного неудачного комментария:
NSArray *items = [[NSArray alloc] init]; //инициализация items
Этот комментарий описывает то, что и так понятно с кода. В лучшем случае он не несет никакой полезной информации, в худшем — загрязняет код. Но самый большой вред чистоте кода несет закомментированный код. Это происходит потому, что его никто никогда не удаляет. Каждый программист думает, что это важная часть, что предыдущий программист хотел что-то сказать этим. Программа может уже несколько раз измениться, а закомментированный останется жить. Поэтому если вы видите в комментариях код — смело удаляйте его.

Приведенный список правил не претендует на полноту. Скорее это рекомендации как для начинающего, так и опытного программиста. Я считаю, что невозможно написать чистый код, руководствуясь определенными правилами. Нельзя стать мастером, изучив набор эвристик. Профессионализм и мастерство формируются на основе ценностей, которыми вы руководствуетесь в обучении.

<code data-result="[object Object]"><!--nextpage--></code>

Установка Xcode и iPhone SDK

Для успешного написания программ под iPhone вам потребуется компьютер с Mac OS и среда разработки. Такой средой являетсяXcode, поставляемый компанией Apple. Само устройство iPhone или iPad для разработки не обязательны, но окончательную версию вашей программы очень желательно протестировать на реальном железе.

Сам Mac для программирования не обязателен. Я, как и большинство моих знакомых, начинали с хакинтоша. Но как оказалось позже — это был не лучший вариант и я пересел на MacBook.

Последнее время компания Apple старается избавиться от коробочных версий софта. И Xcode не исключение. Если раньше эту программу можно было установить с диска или требовалось скачивать с сайта для разработчиков, то теперь все упростилось. Для установки достаточно зайти в Mac App Store, найти, и установить ее как обычное приложение.

Comments are closed.