На странице: 24 48 96

Большая Тёрка / Мысли /

devteamX


firuz1844

Новости

Mac , С чего начать, devteam, Разное, Новости

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

И так, здравствуйте друзья, приносим свои искренние извинения за длительное отсуцтвие, у нас закончился лимит на хостинге =) сейчас все исправлено и надеюсь подобного больше не повториться!

К сожалению новости пишу я один и по причине сильной занятости обновления будут не такими частыми, как хочется.

Немного о хорошем: мне удалось написать программу и запустить ее на iPhone без сертификата apple, в ближайшее время я доделаю еще одну программу и выложу ее для ограниченного тестирования! Если у меня будет хватать времени на изучение cocoa touch и если будут положительные результаты, возможно, мы объявим о новом наборе разработчиков и заинтересованных людей, т.к. от старого коллектива мало кто остался.
Спасибо всем, кто следит за новостями в нашем блоге, оставайтесь с нами ;)


firuz1844

Внимание, конкурс!

devteam, Разное

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

Объявлен конкурс среди разработчиков. Приз — айфон 8гб. Техзадание было разослано в последней рассылке iNsk DevTeam. Все наверняка получали.

Будут вопросы, пишите, звоните :) Фир


firuz1844

Дополнительные символы v. 1.2

моды, devteam

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

Новая версия символов =) От смайликов пришлось отказаться на время, но они обязательно появятся =) 

Установка уже обсуждалась тут, не забываем делать копию заменяемого файла и помним, что вся эта прелесть показывается только на iPhone, на других телефонах будет что‑то врде пустого квадратика.

Сбоку (на скриншоте) показана кнопка для открытия символов, потом сами символы

Качать тут, здесь и там

Благодарности и вопросы оставлять в комментариях =)


firuz1844

Техническое задание

devteam, Разное

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

Дорогие друзья!

Итак, перед нашей командой стоит первая в жизни супер‑задача — написать клиента для нового, но развивающегося видеосервиса — http://videoinet.ru/ — сервис содержит ссылки на видеофайлы из rutube и youtube.
Тому кто выполнит эту супер‑задачу, обеспечены слава и почет!
Программу попросили разработать наши друзья из idownloads.ru
на условии размещения нашего логотипа и имени разработчика в самой
программе. Программа же будет выложена на видном месте на сайте
iDownloads.ru, и количество ее скачивания будет очень велико. Вот такая
вот возможность прославиться в айрунете!

С уважением,
Фируз Нарзикулов.


firuz1844

Первая встреча iNsk DevTeam

devteam, Разное

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

Можете нас поздравить! Сегодня прошла первая встреча команды разработчиков iNsk.org. Как и было намечено, встреча прошла в кофенй Traveler’s Coffe на Ленина 6 в 12–00. Сам я постарался подойти пораньше, чтобы зарезирвировать столики и накидать повестку встречи (не люблю, когда встречи проходят “ни о чем”).

Изюминкой встречи стали наши новые друзья из Vito Technology — Мурад Назаралиев и Гриша Бутейко. Они уже как полгода пишут софт под iPhone. В данный момент они выложили в AppStore клиента для Task2Gather (система управления задачами) и скоро еще выложат одну очень увлекательную программку, построенную с применением Open GL ES.

Всего присутсвовали семь человек — iSheez (Саша) с Наташей, Trybadyp (Сергей) со своим другом (Алексеем), Грег, Мурад и я. Разговаривали аж до трех часов.

Тем было много, разных и интересных. Но самое важное, что для себя подчеркнул я — для того, чтобы научиться программировать, надо ставить для себя задачу и выполнять её. Так что, если вы реально хотите научиться писать программы для iPhone — берите и пишите. Не бойтесь ошибаться.

Мураду и Грише огромное спасибо за кампанию и за ценные советы!


firuz1844

Hackintosh: Установка Leopard OS X Retail DVD на PC

devteam, Разное

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

Как известно, Маки - компьютеры дорогие. Но если вы хотите например программировать под iPhone, а Мака у вас нет. Как тут быть? Ответ описан в нижеприведенной статье.

При создании первых hackintosh PC, использовались измененные OS X инсталляторы, hackintosh сообщество проделало длинный путь, чтобы заставить работать Mac OS X на обычном PC.

Новый OS X, созданный Apple для маков на базе процессоров Intel, имеет PC-IBM совместимость.

Нам понадобится оригинальный Mac OS X DVD, чтобы превратить наш PC в hackintosh, но мы все еще нуждаемся в bootloader, чтобы заставить устанавливаться OS X. После успешной установки мы можем использовать любые обновления от Apple, не ломая нашу систему или повторно устанавливать операционную систему, без необходимости добавлять те же самые kexts (драйверы), которые необходимы, чтобы поддерживать работу периферийных аппаратных средств, стандарта PC.

Минимальные требования для PC:

- PC с Intel Core Processors и Intel чипсет (AMD еще не поддерживаются).

- Чистый компакт-диск (для создания загрузочного диска).

- Оригинальный Mac OS X DVD (не модифицированный образ OS X).

Скачайте Leopard 10.5.4 ComboUpdate здесь.

Скачайте Chameleon для Жесткого диска здесь.

Скачайте загрузочный Boot-132 образ здесь.

Скачайте EFIStudio здесь.

Шаг 1. Прежде, чем Вы начнете установку:

Запишите загрузочный Boot-132 образ на компакт-диск. Этот BootCD должен работать для большинства конфигураций PC; после загрузки с этого диска, вы сможете начать установку с оригинального OS X DVD. Если установка не началась, возможно, должны изменить содержание загрузочного диска и добавить необходимые kexts файлы. Ищите подробную информацию здесь.

Шаг 2. Установите Леопарда.

1. Вставьте BootCD и перезагрузите Ваш PC.

2. На загрузке BootCD нажмите enter. Вас попросят выбрать шестнадцатеричное Boot устройство с двумя цифрами (ничего не нажимайте).

3. Вытащите BootCD и замените его на оригинальный Mac OS X DVD. Подождите, пока не начнется читать информация с Вашего DVD

Если Вас возвращают к меню bootloader, это значит, что у Вас не оригинальный DVD диск Mac OS X.

4. И так, на этом этапе должен запуститься установщик Mac OS X Leopard. Сейчас Вам придется использовать Дисковую утилиту (подменю Утилит), чтобы разделить и отформатировать Ваш жесткий диск, в формат Mac OS (журнальный). Далее продолжайте установку.

5. После установки будет перезагрузка, в это время замените Mac OS X DVD на BootCD.

6. После загрузки BootCD, войдите в меню с двумя шестнадцатеричными цифрам. Выберите 80, если это пункта нет, вернитесь назад, нажав Esc и попробуйте выбрать 81, и так далее пока Вы не увидите вашу OS X. Выберите ее на нажмите Enter!

7. Mac OS Leopard должна загрузиться.

Шаг 3. Обновление Леопарда до версии 10.5.4

1. Установите 10.5.4 ComboUpdate.

2. Перезагрузите компьютер с BootCD и входите в то же самое меню с двумя цифрами, в которую Вы заходили для запуска Mac OS Leopard. Выберите диск с которого загружались и напечатайте: -v-f (Это надо сделать только один раз, последующие запуски этого не требуют), и нажмите enter.

3. Пока что, Вы еще не сможете загрузить свой hackintosh без BootCD.

Шаг 4. Установка Chameleon

Chameleon, который вы скачали выше, должен состоять из следующих файлов:

Chameleon_DFE_for_Hard_Disk.dmg

OSX86Tools

EFIStudio

1. Откройте Chameleon.

2. Скопируйте содержимое каталога.

3. Щелкните два раза на файле Chameleon_DFE_for_Hard_Disk.pkg и установите на свой жесткий диск.

4. Извлеките BootCD и перезагрузитесь.

5. Теперь Леопард должен загрузиться без BootCD.

Исправления:

Сеть: IONetworkingFamily.kext, из образа GA-965P-DS3_ISO bootcd.

Аудио: AppleAzaliaAudio.kext, из образа Generic.iso BootCD.

Перезагрузка: Замените AppleACPIPlatform.kext этим.

Выключение: Скачайте и установите это.

Чтобы легко установить kexts, Вы можете использовать OSX86 Tools. Более подробно об использовании OSX86 Tools, вы можете ознакомиться здесь. Вы можете также использовать EFI Studio, чтобы попытаться добавить Последовательность EFI к Вашему Boot.plist в том случае, если у Вас проблемы с видео или аудио kexts. Более подробно о EFI здесь.

Видео (Nvidia 7200GS) исправление (QE/CI):

Видео kexts или инжекторы (Nvinject, NvInstaller) не работают после модернизации к 10.5.4. Я попробовал много версий, и ни один не заработала. Я попытался добавить последовательности устройства к com.apple и Boot.plist, используя EFIStudio, и удалил все видео инжекторы в Расширениях, это не помогло. Наконец, я узнал, что у Generic.iso BootCD есть Nvkush.kext и устанавливая Хамелеона, Nvkush.kext устанавливался на мой жесткий диск. Таким образом, я удалил только Nvkush.kext из папки /Extra/Extensions и убедился, что у меня правильная последовательность устройств в com.apple. Boot.plist, используя EFIStudio, после перезагрузки все было нормально!

Теперь у Вас есть Hackintosh, который максимально приближен к реальному Mac с точки зрения основной программы. Вы можете благополучно использовать Обновление Программного обеспечения, чтобы установить обновления непосредственно с сайтa Apple на Ваш PC. Но чтобы получить реальный опыт работы с Mac, лучше купить настоящий Macintosh!

Перевод by iSheeZ, оригинальная статья: тут


firuz1844

Рабочая встреча DevTeam’а

devteam, Разное

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

Уважаемые коллеги!

Приглашаю всех участников группы iNsk DevTeam встретиться 25 октября в 12–00 в кофейне Traveler’s Coffee на ул. Ленина 12.

Цель встречи — познакомиться и обсудить дальнейшие шаги развития команды.

Также на встрече вас ожидают маленькие приятные неожиданности =)

Кстати, специально для iNsk DevTeam на базе услуг Google для партнеров создана стартовая страница http://devteam.insk.org/. Всем, кто хочет иметь доступ туда — пишите в комменты, на мыло или в аську. Для получивших логин также будут доступны следующие сервисы:

http://mail.insk.org/ — веб‑почта

http://pages.insk.org/ — общие документы DevTeam

http://ical.insk.org/ — общий календарь событий DevTeam

С уважением, Фируз Нарзикулов.


firuz1844

Немного модов

моды, devteam, Разное, Новости

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

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

Первый мод: дополнительные символы

При длительном нажатии на символ “.” (точка) всплывает окно с кучкой новых знаков ;)

Устанавливается очень просто, необходимо скопировать файл”Keyboard-ru.plist” в директорию: “/System/Library/Frameworks/UIKit.framework”

с заменой стандартного.

ОБЯЗАТЕЛЬНО ДЕЛАЙТЕ BACKUP ФАЙЛЫ

(резервные копии :) )

 

скачать:

  keyboard (1.4 KiB, 1 hits)

скачать с narod.disk

 

Второй мод: полная дата на локскрине

Теперь дата на локскрине будет иметь формат: день, число, месяц, год. (например: четверг, 16 октября 2008 г.) Устанавливается очень просто, необходимо скопировать файл ru.plist“ в директорию: “/System/Library/Frameworks/UIKit.framework/DateFormats” с заменой стандартного. 

скачать: 

  date (293 bytes, 0 hits)

скачать с narod.disk

Третий мод: полный день недели на значке календаря

Больше не будет сокращений вроде “ПТ” или “СР” все понятно и удобно! Устанавливается очень

просто, необходимо скопировать файл ”SpringBoard.strings в директорию: 

“/System/Library/CoreServices/SpringBoard.app/ru.lproj” с заменой стандартного. 

скачать: 

  day (23.7 KiB, 0 hits)

скачать с narod.disk

 

На этом пока все, еще раз напоминаю, делайте копии заменяемых файлов!


firuz1844

Изучаем Objective-C: Букварь

С чего начать, devteam

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

Этот документ доступен для скачивания в PDF формате

alt objectivecaprimer_rus.pdf (74.8 KiB, 0 hits)

Objective-C - это простой язык программирования, разработанный как язык объектно-ориентированного программирования. Objective-C расширяет стандартные возможности ANSI-C, осуществляя поддержку таких возможностей, как описание классов, методов и свойств. Синтаксис языка в основном основан на языке Smalltalk - одном из первых ООП-языков.
Если у вас уже есть опыт работы с ООП-языками, то следующая информация поможет вам разобраться в синтаксисе Objective-C. Многие концепции ООП, такие как инкапсуляция, наследование и полиморфизм, также применяются в Objective-C. Но есть и некоторые отличия, которые отражены в данной статье и в других документах, доступных на официальном сайте для разработчиков.

Если же вы не программировали раньше в языках ООП, тогда вам нужно усвоить некоторые базовые концепции, перед тем как приступить к разработке приложений. Использование объектов ООП является фундаментальным в работе iPhone, и понимание их использования и взаимодействия между ними важны для программирования. Для того чтобы понять концепции ООП, изучите Object-Oriented Programming with Objective-C. Вы также можете изучить Cocoa Fundamentals Guide чтобы узнать о применении концепций ООП в Cocoa. Для более детального изучения синтаксиса языка Objective-C вы можете изучить The Objective-C 2.0 Programming Language.

Читать далее

Objective-C: Как подмножество C

Objective-C - это подмножество языка ANSI C, в котором поддерживается некоторый базовый синтаксис C. Также как и в C-коде, вы определяете заголовочный (header) файл и файл кода (source) чтобы было проще отделить объявление от реализации в вашем коде программы. Заголовочные файлы в Objective-C используют расширение файлов, прдставленное в Таблице 1.

Таблица 1 Расширения файлов для кода Objective-C

Расширение </p>

Тип исходников

.h Заголовочные (header) файлы. Cодержат классы, типы, функции и объявление констант.
.m Файлы кода (source). Это типовое расширение файлов для исходного кода как Objective-C, так и C-кода.
.mm Файлы кода (source). Файлы с таким расширением обычно содержат код C++ в дополнении к коду Objective-C и C. Это расширение используется только, если вы фактически обращаетесь к классам или особенностям C++ из вашего Objective-C кода.

Когда вы захотите включить header файл в ваш исходный код, вы можете использвать стандартную директиву компилятора #include, но в Objective-C можно сделать проще. Директива #import идентична директиве #include, за исключением того, что она проверяет, не включался ли то же самый файл раньше. Во всех примерах и в документации по Objective-C предпочитается использовать #import, соответсвенно ваш код должен быть написан также.

Строковые переменные

Как в подмножестве C, в Objective-C поддерживается те же самые соглашения для того, чтобы определить строки как и в C. Другими словами, единичные символы заключаются в одинарные кавычки и строки заключаются в двойные кавычки. Однако, большинство структур (frameworks) в Objective-C не часто используют стиль описания строк как в C. Вместо этого, большинство frameworks раздают строки в объектах типа NSString.

Класс NSString обеспечивает упаковку объекта для строк, которые имеют все преимущества, ожидаемые вами, включая встроенное управление памятью для того, чтобы хранить строки произвольной длины, поддержку Unicode, утилит форматирования printf-стиля и т.п. Хотя обычно используются именно такие строки, Objective-C обеспечивает упрощеный метод (shorthand) для того, чтобы создать объекты NSString из значения константы. Чтобы использовать этот упрощенный метод все что вам нужно сделать - предопределить стандартную строку, заключенную в двойные кавычки с символом @, так как показано в примерах ниже:

NSString* myString = @"My String\n";
NSString* anotherString = [NSString stringWithFormat:@"%d %s", 1, @"String"];

// Создание строки Objective-C из строки C
NSString* fromCString = [NSString stringWithCString:"A C string" encoding:NSASCIIStringEncoding];

Классы

Как и в большинстве других объектно-ориентированных языках, классы в Objective-C обеспечивают основную конструкцию для формирования некоторых данных с действиями, которые воздействуют на эти данные. Объект - это просто экземпляр класса, который содержит в оперативной памяти копии переменных экземпляров класса, объявленных этим классом и указателями на методы класса.

Определение класса в Objective-C требует две различные части: интерфейс (interface) и реализация (implementation). Интерфейс определяет структуру экземпляров класса, а также instance-переменные и методы, связанные с классом. Реализация содержит код для описания методов класса. Иллюстрация 1 показывает синтаксис, объявляющий класс по имени MyClass, который наследуется из базового класса NSObject. Декларация класса всегда начинается с директивы компилятора @interface и заканчивается директивой @end. После имени класса следует имя родительского класса, отделенное двоеточием. Instance-переменные класса объявляются в блоке кода, который заключен в скобки ({ и }). После блока описания instance-переменных следует список методов, объявленных классом. После каждого объявления instance-переменной или метода ставится точка с запятой.

Иллюстрация 1 Определение класса
alt

alt

Листинг 1 показывает реализацию класса MyClass из предыдущего примера. Как и в декларации класса, реализация (implementation) класса заключена между двумя директивами компилятора - @implementation и @end. Эти директивы предоставляют определенную информацию, которая нужна компилятору для того, чтобы связать вложенные методы с соответствующим классом. Поэтому, определение метода соответствует заданному определению в интерфейсе, кроме включения блока с кодом.

Листинг 1 Реализация класса

@implementation MyClass</p>

- (id)initWithString:(NSString *) aName
{
if (self = [super init]) {
count count = 0;
data = nil;
name = [aName copy];
return self;
}
}

+ (MyClass *)createMyClassWithString: (NSString *) aName
{
return [[[self alloc] initWithString:aName] autorelease];
}
@end


Примечание:
Хотя предыдущая реализация класса объявляет только методы, однако классы могут также объявлять и свойства. Для получения дополнительной информации о свойствах, см. в разделе Свойства данного материала.

Когда вы храните объекты внутри переменных, вы так или иначе используете ссылочный тип (pointer type). Objective-C поддерживает как явное, так и неявное объявление типов переменных, содержащих объекты. Явно объявленные указатели включают название класса в объявлении типа переменной. Неявно объявленный тип указателя, в отличии от явного, использует тип id для объектов. Неявно объявленный тип указателя чаще всего используется для таких вещей, как коллекционные классы, где может быть неизвестным точный тип объектов коллекции. Если вы привыкли использовать языки, где используется только явное объявление типов, тогда наверное вы будете думать, что использование неявного объявления типа переменных вызовет кучу проблем. Однако, на самом деле, это обеспечивают огромную гибкость и намного большую динамичность в программах Objective-C.

Вот пример обоих типов объявления переменных для класса Myclass:

MyClass* myObject1; // Явное объявление типа
id myObject2; // Неявное объявление типа

Методы

Класс в Objective-C может объявлять два типа методов: методы экземпляра класса и методы класса. Метод экземпляра класса - метод, выполнение которого - в границах видимости определенного экземпляра класса. Другими словами, прежде, чем вы вызываете метод экземпляра класса, вы должны сначала создать этот экземпляр класса. Методы класса, к примеру, не требуют, чтобы вы создавали экземпляр класса, но поговорим об этом позже.

Объявление метода состоит из идентификатора типа метода, типа возвращаемого значения, одного или более ключевых слов сигнатуры, а также тип свойства и информации о имени. Иллюстрация 2 показывает объявление метода экземпляра класса insertObject:atIndex: Объявлению предшествуют знак минуса (-) , который указывает, что это метод экземпляра класса. Фактическое имя метода (insertObject:atIndex:) - это связь всех ключевых слов сигнатуры, включая символы двоеточия. Символы двоеточия объявляют присутствие свойства. Если у метода нет никаких свойств, то опустите двоеточие только после первого ключевого слова сигнатуры. В этом примере метод получает два свойства.

Иллюстрация 2 Синтаксис объявления метода

alt

Когда вы хотите вызвать метод, вы делаете это через обмен сообщениями с соответствующим объектом. Сообщение в этом случае - это сигнатура метода вместе с информацией о свойстве, необходимые методу. Все сообщения, которые Вы посылаете объекту, отправляются динамически, таким образом облегчая поведение полиморфизма классов в Objective-C. Другими словами, если подкласс определяет метод с той же самой сигнатурой, как один из ее родительских классов, сначала сообщение получает подкласс и может решить отправлять сообщение его родителю или нет.

Сообщения заключаются в квадратные скобки [ и ]. Внутри скобок указывается объект, которому предназначено сообщение (включая все необходимые свойства) и само сообщение. Например, чтобы послать сообщение insertObject:atIndex: объекту из myArray переменной, следует использовать следующий синтаксис:

[myArray insertObject:anObj atIndex:0];

Чтобы избежать объявления множества локальных переменных хранящих временные значения, Objective-C позволяет вкладывать сообщения друг в друга. Возвращаемое значение из каждого вложенного сообщения используется как свойство, или как цель для другого сообщения. Например, вы можете заменить любую из переменных, используемых в предыдущем примере, сообщениями для того чтобы получить значения. Таким образом, если бы у вас был другой объект, названный myAppObject, у которого были бы методы обращения к объекту типа массив и объект, который необходимо вставить в массив, то вы могли бы написать предыдущий пример, таким образом:

[[myAppObject getArray] insertObject:[myAppObject getObjectToInsert] atIndex:0];

Хотя предыдущие примеры посылали сообщения экземпляру класса, вы можете также посылать сообщения непосредственно классу. Когда сообщение передается классу, метод должен быть определен как метод класса, а не как метод экземпляра класса. Методы класса чем то похожи на статические участники (static members) в классах C++.

Обычно методы класса используются как фабрика методов с целью создания новых экземпляров класса или для предоставления доступа к определенной части допустимой информации класса. Синтаксис объявления метода класса схож с синтаксисом описания методов экземпляра класса, но с одним исключением. Вместо того знака минус в определении идентификатора типа метода, используется знак плюс (+).

Следующий пример демонстрирует использование метода класса как фабрики методов для класса. В этом случае метод arrayWithCapacity: - метод класса из класса NSMutableArray, который размещает и инициализирует новый экземпляр класса и возвращает его в ваш код.

NSMutableArray* myArray = nil; // nill - это то же самое что и NULL (пустой указатель)
// Создание нового массива и назначение его переменной myArray
myArray = [NSMutableArray arrayWithCapacity:0];

Свойства

Свойства - удобное средство для замены объявления средств доступа метода (accessor method). Свойства не создают новые переменные экземпляра в объявленом класск. На самом деле, свойства - это упрощенный способ (shorthand) для определения методов, обращающихся к существующим переменным экземплярам. Классы, которые подставляют переменные экземпляра, могут использовать обозначение свойства вместо того, чтобы использовать синтаксис getter и setter. Классы также могут использовать свойства для того, чтобы подставить виртуальные переменные экземпляров класса - данные вычисленные динамически, но фактически не сохраненые в переменных экземплярах класса.

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

Включаете объявления свойств с объявлениями метода в вашем интерфейс-классе. Для объявления свойств используют директиву @property, сопровождаемую информацией о типе и имени свойства. Вы можете также описывать свойства с собственными параметрами, которые определяют, как методы доступа должны себя вести. Ниже приведены примеры объявления нескольких простых свойств:

@property BOOL flag;
@property (copy) NSString* nameObject; // Копирование объекта во время присваивания.
@property (readonly) UIView* rootView; // Создание только метода getter.

Еще один удобный нюанс в применении свойств - это то, что вы можете использовать синтаксис с точкой, обращаясь к свойствам вашего кода. А вот пример его использования:

myObject.flag = YES;
CGRect viewFrame = myObject.rootView.frame;

Хотя имена объекта и свойства в предыдущем примере надуманы, они все же демонстрируют гибкость свойств. Синтаксис с применением точки фактически маскирует соответствующий набор вызовов метода. Каждое доступное для чтения свойство поддерживается методом с таким же именем, что и само свойство. Каждое доступное для записи свойство поддерживается дополнительным методом формы setPropertyName: , где имя свойства начинается с большой буквы. (Эти методы являются фактической реализация свойств и являются причиной, по которой вы можете включать объявления свойства для атрибутов вашего класса не поддерживаемых переменными экземпляра класса). Давайте перепишем предыдущий пример с использованием методов вместо свойств:

[myObject setFlag:YES];
CGRect viewFrame = [[myObject rootView] frame];

Для того чтобы узнать больше о том, как объявлять свойства в своих собственных классах, прочтите раздел Properties в документе The Objective-C 2.0 Programming Language.

Протоколы и Делегаты

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

В iPhone OS обычно протоколы используются для делегирования объектов. Делегированный объект - это объект, который действует от имени (или под руководством) другого объекта. Чтобы лучше понять как взаимодействуют между собой протоколы, делегаты и другие объекты, давайте рассмотрим пример.

Например, класс UIApplication реализует нужное нам поведение приложения. Вместо того, чтобы заставлять подкласс UIApplication получать простые запросы о текущем состоянии приложения, класс UIApplication передает эти запросы назначенному объекту-делегату, вызывая при этом определенные методы. Тоесть, объект, который реализует методы протокола UIApplicationDelegate, может получать эти запросы и выдавать на них соответствующий ответ.

Объявление протокола похоже на интерфейс класса, за исключением того, что у протоколов нет родительского класса, и они не определяют переменные экземпляра. Следующий пример показывает простое объявление протокола с одним методом:

@protocol MyProtocol
- (void)myProtocolMethod;
@end

В случае, когда используется много протоколов делегирования, принятие протокола - это просто вопрос реализации методов определенных этим протоколом. Есть некоторые протоколы, которые требуют, чтобы вы ясно заявили, что вы поддерживаете протокол, и тогда протоколы могут определять оба метода, как необходимые, так и опциональные. Чем глубже вы увлекаетесь разработкой приложений, тем больше времени вам придется потратить на то, чтобы почитать раздел Protocols из документа The Objective-C 2.0 Programming Language.

Хотите знать больше?

Предыдущая информация была предназначена прежде всего для того, чтобы ознакомить вас с базовыми основами языка Objective-C. Охваченный в данном материале предмет отражает лишь некоторые особенности языка, с которыми вы наверняка встретитесь. Однако вам необходимо знать, что описанные здесь особенности - не единственные, поэтому мы всегда поощряем читать больше об Objective-C в документе The Objective-C 2.0 Programming Language.

Это первая версия перевода документа, которая доступна по адресу: http://www.insk.org/category/devteam/start/objectivecprimer/
Оригинал статьи (англ.) находится по адресу: http://developer.apple.com/iphone/gettingstarted/docs/objectivecprimer.action

3 комментария

firuz1844

Альтернативное программирование iPhone

С чего начать, devteam

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

iphoneremote_319_418Всем разработчикам под iPhone известно, что раньше можно было писать только Web‑приложения, которые работали из под Safari. Иногда, оказывается, проще использовать именно эту технологию для написания своей программы. Вот вам пример от IBM, как написать аналог Saling Clicker — пульт дистанционного управления Mac OSX через встроенные возможности системы.


firuz1844

Установка iPhone SDK на Hackintosh AMD

С чего начать, devteam

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

Все делаете как написано тут, кроме пункта 4.

Вместо того что рекомендует Евгений для PPC добавьте в конце iPhone Simulator Architectures.xcspec следующий код:

  1. // AMD
  2. {   Type = Architecture;
  3. Identifier = i386;
  4. Name = «AMD»;
  5. Description = «32-bit AMD»;
  6. ByteOrder = big;
  7. ListInEnum = NO;
  8. SortNumber = 106;
  9. },

firuz1844

Пора взглянуть друг другу в глаза!

devteam, Новости

Запись опубликована iNsk.org. Пожалуйста, оставляйте комментарии там.

Приветствуем всех участников нашей команды iNsk DevTeam и тем, кто просто любопытствует! Нам кажется, что пора бы познакомиться поближе и встретиться лицом к лицу, отметить старт продаж iPhone в России и, вообще, поболтать за чашечкой кофе.

Встреча будет проходить в кофейне Traveler’s Coffee 3 октября в 20–00 (в стеклянном шарике у театра Глобус) возле стойки с Аймаками. Приглашаются все интересующиеся!!!