<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5632685651560697690</id><updated>2012-02-16T01:22:04.170-08:00</updated><category term='Синтаксис'/><category term='xcode'/><category term='Splash'/><category term='hotkeys'/><category term='icon'/><title type='text'>Записки iOS разработчика</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://zhukoff.info/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5632685651560697690/posts/default'/><link rel='alternate' type='text/html' href='http://zhukoff.info/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>@zhuk_off</name><uri>http://www.blogger.com/profile/15280060410387836784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-_hllOzrnjLo/TV-1iBg2F4I/AAAAAAAAAAM/WDl-CP2cVzU/s220/zhukov.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5632685651560697690.post-226272111503118400</id><published>2011-10-18T15:08:00.000-07:00</published><updated>2011-10-18T15:16:20.070-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Синтаксис'/><title type='text'>Особенности Objective-C</title><content type='html'>&lt;!-- Файлы модулей на Objective-C имеют расширение “.m” (если использовалась смесь С++ и Objective-С, то расширение “.mm”). Заголовочные файлы – “.h”. Все, создаваемые в Objective-С объекты классов должны размещатся в динамической памяти. Поэтому особое значение приобретает тип id, который является указателем на объект любого класса (по сути void *). Нулевой указатель именуется константой nil. Таким образом, указатель на любой класс можно привести к типу id. Возникает проблема: как узнать к какому классу относится объект, скрывающийся под id? Это делается благодаря инварианту isa, который присутствует в любом объекте класса, унаследовавшего специальный базовый клас NSObject (приставка NS обозначает NeXT Step). Инвариант isa относится к зарезервированному типу Class. Объект такого типа позволяет узнавать имена своего и базового класса, набор инвариантов класса, а также прототипы всех методов, которые реализовал этот объект и их адреса (посредством локального списка селекторов). Все зарезервированные слова Objective-C, отличающиеся от зарезервированных слов языка С, начинаются с символа @ (например @protocol, @selector, @interface). Обычно имена инвариантов классов с ограниченной областью видимости (@private, @protected) начинаются с символа подчеркивания. Для строк в Cocoa имеется очень удобный класс NSString. Строковая константа такого класса записывается как @”Hello world”, а не как обычная для С строковая константа “Hello world”. Тип BOOL (по сути unsigned char) может принимать константные значения YES и NO. Все особые для Objective-C зарезервированные слова (которые отличаются от языка С и находятся в заголовочном файле objc/objc.h) приведены ниже:--&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;@interface&lt;/b&gt; Начинает объявление класса или категории (категория – расширение класса дополнительными методами без наследования)&lt;/li&gt;&lt;li&gt;&lt;b&gt;@implementation&lt;/b&gt; Начинает определение класса или категории&lt;/li&gt;&lt;li&gt;&lt;b&gt;@protocol&lt;/b&gt; Начинает объявление протокола (аналог класса С++, состоящего из чисто виртуальных функций)&lt;/li&gt;&lt;li&gt;&lt;b&gt;@end&lt;/b&gt; Завершает объявление\определение любого класса, категории или протокола&lt;/li&gt;&lt;li&gt;&lt;b&gt;@private&lt;/b&gt; Ограничивает область видимости инвариантов класса методами класса (аналогично С++)&lt;/li&gt;&lt;li&gt;&lt;b&gt;@protected&lt;/b&gt; Стоит по умолчанию. Ограничивает область видимости инвариантов класса методами класса и методами производных классов (аналогично С++)&lt;/li&gt;&lt;li&gt;&lt;b&gt;@public&lt;/b&gt; Удаляет ограничения на облать видимости (аналогично С++)&lt;/li&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;li&gt;&lt;b&gt;@try&lt;/b&gt; Определяет блок с возможной генерацией исключений (аналогично С++)&lt;/li&gt;&lt;li&gt;&lt;b&gt;@throw&lt;/b&gt; Генерирует объект-исключение (аналогично С++)&lt;/li&gt;&lt;li&gt;&lt;b&gt;@catch ()&lt;/b&gt; Обрабатывает исключение, сгенерированное в предшествующем блоке @try (аналогично С++)&lt;/li&gt;&lt;li&gt;&lt;b&gt;@finally&lt;/b&gt; Определяет блок после блока @try, в который предается куправление независимо от того, было или нет сгенерировано исключение&lt;/li&gt;&lt;li&gt;&lt;b&gt;@class&lt;/b&gt; Сокращенная форма объявления класса (только имя (аналогично С++))&lt;/li&gt;&lt;li&gt;&lt;b&gt;@selector(method_name)&lt;/b&gt; Возвращает скомпилированный селектор для имени метода method_name&lt;/li&gt;&lt;li&gt;&lt;b&gt;@protocol(protocol_name)&lt;/b&gt; Ворзвращает экземпляр класса-протокола с именем protocol_name&lt;/li&gt;&lt;li&gt;&lt;b&gt;@encode(type_spec)&lt;/b&gt; Инициализирует строку символов, которая будет использована для шифрования данных типа type_spec&lt;/li&gt;&lt;li&gt;&lt;b&gt;@synchronized()&lt;/b&gt; Определяет блок кода, выполняющегося только одной нитью в любой определенный момент времени&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5632685651560697690-226272111503118400?l=zhukoff.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhukoff.info/feeds/226272111503118400/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://zhukoff.info/2011/10/features-objective-c.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5632685651560697690/posts/default/226272111503118400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5632685651560697690/posts/default/226272111503118400'/><link rel='alternate' type='text/html' href='http://zhukoff.info/2011/10/features-objective-c.html' title='Особенности Objective-C'/><author><name>@zhuk_off</name><uri>http://www.blogger.com/profile/15280060410387836784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-_hllOzrnjLo/TV-1iBg2F4I/AAAAAAAAAAM/WDl-CP2cVzU/s220/zhukov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5632685651560697690.post-6829862975042975207</id><published>2011-10-03T17:35:00.000-07:00</published><updated>2011-10-03T17:40:45.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><category scheme='http://www.blogger.com/atom/ns#' term='hotkeys'/><title type='text'>Горячие главиши в XCode</title><content type='html'>Как человек, начинавший с DOS и Norton Commander, я не представляю себе, как не пользоваться сочетаниями клавиш. Как вообще может прийти голову копировать через меню Правка? Разве что сломалась клавиатура...&lt;br /&gt;Скажу не банальность, но классику: сочетания клавиш могут существенно упростить и ускорить работу. Немного полезныx сочетаний клавиш для XCode.&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Переключение между заголовочным файлом и файлом исходного текста: Cmd + Opt + ↑&lt;/li&gt;&lt;li&gt;Переключение к определению идентификатора: Cmd + двойной щелчок&lt;/li&gt;&lt;li&gt;Найти документацию для идентификатора: Opt + двойной щелчок&lt;/li&gt;&lt;li&gt;Выбрать следующий аргумент в автозаполнении: Tab + → или Ctrl + /&lt;/li&gt;&lt;li&gt;Выбрать предыдущий аргумент в автозаполнении: Shift + Tab + → или Shift + Ctrl + /&lt;/li&gt;&lt;li&gt;Показать список автозаполнения: Esc&lt;/li&gt;&lt;li&gt;Циклическое переключение между вариантами автозаполнения: Ctrl + .&lt;/li&gt;&lt;li&gt;В обратном направлении между вариантами автозаполнения: Ctrl + Shift + .&lt;/li&gt;&lt;li&gt;Найти в документации: Opt + Cmd + двойной щелчок на идентификаторе&lt;/li&gt;&lt;li&gt;Выбор нескольких произвольных слов в редакторе: Cmd + Ctrl + двойной щелчок на слове&lt;/li&gt;&lt;li&gt;Показать всплывающий список методов и определений в данном файле: Ctrl + 2&lt;/li&gt;&lt;li&gt;Переключиться к классу в XCode из IB: Cmd + двойной щелчок на объекте в Document Window&lt;/li&gt;&lt;li&gt;Выбрать наложенные друг на друга элементы в Interface Builder: Ctrl + Shift + щелчок на объекте&lt;/li&gt;&lt;li&gt;Табулировать блок кода вправо или влево: Cmd + ] или Cmd + [&lt;/li&gt;&lt;li&gt;Закомментировать блок кода: Cmd + /&lt;/li&gt;&lt;li&gt;Скрыть список файлов над редактором кода: Cmd + Shift + E&lt;/li&gt;&lt;li&gt;Скрыть список файлов над редактором кода и «Groups and Files»: Cmd + Opt + Shift + E&lt;/li&gt;&lt;li&gt;Быстрый переход к группе на панели «Groups and Files»: Ctrl + Shift + Opt + первая буква группы. Нажмите еще раз, для перехода к следующей группе, если начальные буквы одинаковые.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Помните, что есть еще сочетания, определенные для стандартных пунктов меню. Colin Wheeler уже постарался и подготовил красивую шпаргалку горячих клавиш. Да еще и в разных цветовых решениях.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5632685651560697690-6829862975042975207?l=zhukoff.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhukoff.info/feeds/6829862975042975207/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://zhukoff.info/2011/10/xcode-hotkeys.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5632685651560697690/posts/default/6829862975042975207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5632685651560697690/posts/default/6829862975042975207'/><link rel='alternate' type='text/html' href='http://zhukoff.info/2011/10/xcode-hotkeys.html' title='Горячие главиши в XCode'/><author><name>@zhuk_off</name><uri>http://www.blogger.com/profile/15280060410387836784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-_hllOzrnjLo/TV-1iBg2F4I/AAAAAAAAAAM/WDl-CP2cVzU/s220/zhukov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5632685651560697690.post-3897351596207169459</id><published>2011-10-03T16:34:00.000-07:00</published><updated>2011-10-03T18:42:56.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Splash'/><title type='text'>Создаем Splash экран (заставку)</title><content type='html'>Достаточно частая задача и важная. Верно, куда приятней смотреть на картинку при старте приложения, чем на блеклый экран. И так, давайте расмотрим один из способов создания splash-экрана (для тех, кто не знает. splash-screen -это заставка).&lt;br /&gt;&lt;br /&gt;[картинка]&lt;br /&gt;&lt;br /&gt;материал основан на http://adeem.me/blog/2009/06/22/creating-splash-screen-tutorial-for-iphone&lt;br /&gt;&lt;br /&gt;1. Создайте новый проект, назовите его Splash.&lt;br /&gt;2. Откройте SplashViewController.xib. Сделайте фон белым&lt;br /&gt;Если запустить приложение, то перед тем как мы увидем наш белый фон, мы увидем черный экран.&lt;br /&gt;&lt;br /&gt;3. Поместите Вашу картинку в папку resources Вашего проекта;&lt;br /&gt;4. Переименуйте картинку в Default.png; &lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Теперь, при старте приложения будет показан не черный экран, как в прошлый раз, а картинка Default.png. Как видите, все достаточно просто и никаких танцев с бубном. Все дело в том, что iPhone SDK изначально заложена концепция отображения пользователю чего-либо пока приложение грузит в память необходимые для его работы данные.&lt;br /&gt;&lt;br /&gt;Двигаемся дальше. Теперь добавим небольшую задержку, чтобы заставка сразу не пропадала с экрана. Создадим для этой цели экран (view - вид).&lt;br /&gt;&lt;br /&gt;5. Создайте view. Установиде фон в нужный Вам цвет;&lt;br /&gt;6. Поместите на view компонент Image View;&lt;br /&gt;7. Установите атрибут image компонента Image View в значение Default.png;&lt;br /&gt;8. Установите атрибут mode компонента View в значение Scale to fill;&lt;br /&gt;9. В файл SplashAppDelegate.m в конец applicationDidFinishLaunching (см. назначение данного метода) метода добавте строку:&lt;br /&gt;&lt;br /&gt;[viewController showSplash];&lt;br /&gt;&lt;br /&gt;10. В файле SplashViewController.h определите два метода и определите переменную IBOutlet:&lt;br /&gt;&lt;br /&gt;IBOutlet UIView *modelView;&lt;br /&gt;- (void)showSplash;&lt;br /&gt;- (void)hideSplash;&lt;br /&gt;&lt;br /&gt;11. Добавьте реализацию в SplashController.m:&lt;br /&gt;&lt;br /&gt;-(void)showSplash&lt;br /&gt;{&lt;br /&gt;UIViewController *modalViewController = [[UIViewController alloc] init];&lt;br /&gt;modalViewController.view = modelView;&lt;br /&gt;[self presentModalViewController:modalViewController animated:NO];&lt;br /&gt;[self performSelector:@selector(hideSplash) withObject:nil afterDelay:2.0];&lt;br /&gt;}&lt;br /&gt;//Закрываем экран&lt;br /&gt;- (void)hideSplash{&lt;br /&gt;[[self modalViewController] dismissModalViewControllerAnimated:YES];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Теперь нужно привязать наш контроллер (SplashViewController) к нашей view. (http://www.youtube.com/watch?v=bxPS23wUTyo&amp;feature=player_embedded)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5632685651560697690-3897351596207169459?l=zhukoff.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhukoff.info/feeds/3897351596207169459/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://zhukoff.info/2011/10/splash-screen.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5632685651560697690/posts/default/3897351596207169459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5632685651560697690/posts/default/3897351596207169459'/><link rel='alternate' type='text/html' href='http://zhukoff.info/2011/10/splash-screen.html' title='Создаем Splash экран (заставку)'/><author><name>@zhuk_off</name><uri>http://www.blogger.com/profile/15280060410387836784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-_hllOzrnjLo/TV-1iBg2F4I/AAAAAAAAAAM/WDl-CP2cVzU/s220/zhukov.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5632685651560697690.post-5297957027179963838</id><published>2011-10-03T16:19:00.000-07:00</published><updated>2011-10-03T18:43:14.224-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Splash'/><category scheme='http://www.blogger.com/atom/ns#' term='icon'/><title type='text'>Иконка приложения и Заставка</title><content type='html'>Иконка приложения располагаемая на Home экране по умолчанию имеет имя Icon.png. В файле Info.plist можно поменять название иконки путем изменения значения CFBundleIconFile ключа. Иконка должна быть в формате PNG и располагаться в корне приложения (см. Структура пакета iPhone приложения (Application Bundle)). Иконка должна быть размером 57 x 57 пикселов без круглых углов и эффекта глянца. Система сама применит эти эффекты в момент отображения. Данное повидение можно изменить, если включить UIPrerenderedIcon ключ в Info.plist файл.&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Если Вы распространяете приложение по ad-hoc схеме (не через AppStore), то пакет приложения (Application bundle) должен еще включать версию иконки приложения (iTunesArtwork) размером в 512 x 512 пикселов для iTunes .&lt;br /&gt;&lt;br /&gt;Файл для заставки (splash screen) следует называть Default.png. Система отображает данную картинку перед тем, как будет инициализирован пользовательский интерфейс приложения. Данный файл должен располагаться в корне приложения, как и Icon.png. Если приложение загружается через URL, то система ищит Default-scheme.png, где scheme - это адрес URL. Если данный файл не будет найдет, то будет использован Default.png.&lt;br /&gt;&lt;br /&gt;см. Создаем Splash экран (заставку)&lt;br /&gt;&lt;br /&gt;Также, можно добавить локализованные версии картинок (иконка, заставка). см. Локализация&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5632685651560697690-5297957027179963838?l=zhukoff.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zhukoff.info/feeds/5297957027179963838/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://zhukoff.info/2011/10/icon-splash.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5632685651560697690/posts/default/5297957027179963838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5632685651560697690/posts/default/5297957027179963838'/><link rel='alternate' type='text/html' href='http://zhukoff.info/2011/10/icon-splash.html' title='Иконка приложения и Заставка'/><author><name>@zhuk_off</name><uri>http://www.blogger.com/profile/15280060410387836784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-_hllOzrnjLo/TV-1iBg2F4I/AAAAAAAAAAM/WDl-CP2cVzU/s220/zhukov.jpg'/></author><thr:total>0</thr:total></entry></feed>
