LINUX.ORG.RU

OpenSuSE, iPod Touch, Objective-C и все-все-все.

 , , , ,


0

0

Когда-то давно в толксах я писал о том, что собрал iPhone Toolchain в линуксе, и даже что-то показывал, но потом свободного времени стало меньше и я перестал заниматься этим делом.

Теперь снова решил поковыряться с Objecitve-C и iPhoneOS и для начала перенести пример (http://www.iphonesdkarticles.com/2008/07/first-iphone-application.html) с XCode на iPhone Toolchain в линукс.

Основная сложность этого дела - это создание интерфейса приложения без Interface Builder, потому что IB в линуксе естественно нет, поэтому я открыл XCode на макбуке и, пользуясь такими благами цивилизации как автодополнение и iPhone Simulator, начал писать интерфейс вручную. Немного помучившись с видами и контроллерами у меня это получилось.

Далее я перенес написанный код в линукс и попытался его собрать, все собралось успешно, без единой ошибки, очень удивило то что iPhone Toolchain поддерживает все плюшки Objective-C 2.0, такие как @property, я ожидал, что с ними будут проблемы (кстати, а гнустеповский компилятор поддерживает Objective-C 2.0?). Но при запуске я видел только пустой экран и фоновую картинку. После некоторых экспериментов я понял в чем дело, XCode по-другому определяет точку входа в Cocoa-приложение. В XCode-проекте функция main выглядит так:

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]) {
    
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

Видно, что функции UIApplicationMain передаются пустые аргументы, а в iPhone Toolchain проекте эта же функция должна получить название класса основной программы:

#import <UIKit/UIKit.h>

int main(int argc, char *argv[]) {
    
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, @"HelloUniverseProgAppDelegate", @"HelloUniverseProgAppDelegate");
    [pool release];
    return retVal;
}

в моем случае это HelloUniverseProgAppDelegate. И еще одно отличие: класс HelloUniverseProgAppDelegate в XCode наследуется от NSObject с интерфейсом UIApplicationDelegate, а в iPhone Toolchain от UIApplication.

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

А вообще на скриншоте Gnome в OpenSuSE 11.2 с дефолтной темой (даже обоина дефолтная) от которой тошнит мужика2, global-menu вверху, gnome-do внизу, на заднем плане gajim с конфой любителей Objective-C (гы-гы) loosers@conference.jabber.ru и opera.

Зачем я это все написал? надоели пустые скриншоты с дефолтными кедами4 и скриншоты повествующие о то как автор настроил себе тайловый WM.

P.S. Это не закос на мак, я просто привык к подобному интерфейсу.

>>> Просмотр (1280x1024, 383 Kb)

★★★★★

Проверено: Shaman007 ()
Последнее исправление: cetjs2 (всего исправлений: 2)

у гноме-до есть режим так называемого интеллектуального скрытия - попробуй, будет удобнее (:

xscrew ★★
()
Ответ на: комментарий от xscrew

Гм.. спасибо, действительно удобно.

mono ★★★★★
() автор топика

Это всё конечно очень здорово, но:
1) Местами ШГ
2) 64% зарядки у виртуального устройства - это фича такая? :)

jcd ★★★★★
()
Ответ на: комментарий от jcd

>2) 64% зарядки у виртуального устройства - это фича такая? :)

ну пост то можно было прочитать, а не только заголовок:

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

mono ★★★★★
() автор топика
Ответ на: комментарий от jcd

>1) Местами ШГ

если мне тему влом поменять то, думаешь, я буду какие-то там шрифты настраивать?)

mono ★★★★★
() автор топика
Ответ на: комментарий от mono

Так буков много же

То есть программа изменяет размер заряда фиктивной батарейки или якобы активно её ест?

jcd ★★★★★
()
Ответ на: комментарий от jcd

>То есть программа изменяет размер заряда фиктивной батарейки или якобы активно её ест?

Кирилл, проснись, какое виртуальное устройство? В заголовке написано IMG_0014.png. Это обычный скриншот с реального устройства.

mono ★★★★★
() автор топика

А каким образом этот toolchain показывает результат работы? В смысле как он показывает саму программу?

Garfeild
()

блин, и не жалко столько места отдавать доку?

kuyantus
()
Ответ на: комментарий от mio

> А для ипод нано таким макаром можно что нить наваять?

Нет, iPod Touch тоже самое что и iPhone, только без GSM, GPS, GPRS модуль, без камеры и компаса (если брать 3gs модель iPhone). А вот нано не из этой оперы

Garfeild
()
Ответ на: комментарий от Garfeild

>А каким образом этот toolchain показывает результат работы? В смысле как он показывает саму программу?

эмулятора под линукс нема :( поэтому приходится скриптом по ssh закидывать на девайс и там запускать. Для удобства можно поставить VNC-сервер на девайсе, но все-равно это не сравнится с нормальным эмулятором.

Кстати, оригинальный макосевский эмулятор на самом деле не эмулятор в привычном смысле, потому что он реализует специальное окружение для запуска iPhone-приложения на x86, потому что iPhoneOS и OS X почти одно и тоже.

mono ★★★★★
() автор топика
Ответ на: комментарий от mono

>iPhoneOS и OS X почти одно и тоже

я четал, что вообще одно и тоже, только урезанна ессно. Кстате, это говорит о том, что Mac OS хороша, что ее смогли переделать на девайс. Взять тотже windows - windows mobile с нуля городили.

xscrew ★★
()
Ответ на: >iPhoneOS и OS X почти одно и тоже от xscrew

>я четал, что вообще одно и тоже, только урезанна ессно.

ну вообще да. под различиями я понимаю CocoaTouch.

Кстате, это говорит о том, что Mac OS хороша, что ее смогли переделать на девайс. Взять тотже windows - windows mobile с нуля городили.

так то ж юникс.. октрытое ядро Darwin + бздявое окружение. Ну и у Apple есть опыт портирования OS X с ppc на i386.

mono ★★★★★
() автор топика
Ответ на: комментарий от queen3

>Оперу вижу, Хром фижу... ФФ не вижу. Зачёт?

он тоже есть, но я его не люблю.

mono ★★★★★
() автор топика

Прикольно, только шрифтики подкрутить.)

Jayrome ★★★★★
()

Мне понравилось. - Подскажи как перенести меню окон на главную панель? (линк etc.) - GnomeDO: нужен compiz? Desktop effects? как настроить? сколько кушает?

Заранее благодарен.

roman-online
()
Ответ на: комментарий от roman-online

>Мне понравилось. - Подскажи как перенести меню окон на главную панель? (линк etc.)

на это ссылку уже дали, повторюсь: http://code.google.com/p/gnome2-globalmenu/

А gnome-do требует композитного менеджера, т.е. Desktop Effects/compiz включать нужно.

Кушает, к сожалению много - 100-115mb, и у меня иногда поттормаживает. Но я ему все прощаю, за то что это единственный док, который похож на макосевский по поведению, а не только по внешнему виду.

Настроить просто, в параметрах, в разделе внешний вид напротив Selected Theme выбираешь Docky и пользуешься.

mono ★★★★★
() автор топика
Ответ на: комментарий от emaxx

>А в файрфоксе, опере и офисе макосевские менюшки правильно отображаются?

нет, потому что там не стандартные менюшки, а свои велосипеды. qt-приложения тоже не подхватываются, зато GNUStep/Etoile приложения работают отлично.

mono ★★★★★
() автор топика

Re:

У вас чайник скипел ))

Deleted
()

Пора бы осилить несколько рабочих столов и не разводить срач. Имхо.

unikoid ★★★
()
Ответ на: комментарий от Sekai

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

Это не показабельный скриншот, а такая «история успеха».

mono ★★★★★
() автор топика

> (кстати, а гнустеповский компилятор поддерживает Objective-C 2.0?)

Нет.

sv75 ★★★★★
()

Дефолтная тема SUSE как всегда ужасна.

Cancellor ★★★★☆
()
Ответ на: комментарий от ZeroDivisionError

а тебя что, (тут) под оригинальным ником опять забанили? :)

yoghurt ★★★★★
()
Ответ на: комментарий от mono

> GNUStep/Etoile приложения работают отлично.

И в каком состоянии сейчас находится Etoile, уже можно пользоваться? Если не трудно, выложи скрин, хочется посмотреть на него))

Deleted
()

По теме

Гы, допилил таки :)

Ну чо, поздравляю и желаю дальнейших успехов в этом нелегком начинании!

P.S Таки да, пока я не знал Smalltalk, код на Objective C казался мне неведомой хузверушкой
P.P.S А почему не MonoTouch? =)

yoghurt ★★★★★
()
Ответ на: комментарий от Deleted

>И в каком состоянии сейчас находится Etoile, уже можно пользоваться?

Не.. до состояния, чтобы можно было пользоваться еще далеко. Но коммиты в snv поступают регулярно. Т.е проект живет.

Если не трудно, выложи скрин, хочется посмотреть на него))

хорошо, на днях выложу.

mono ★★★★★
() автор топика
Ответ на: По теме от yoghurt

>Гы, допилил таки :)

Ну чо, поздравляю и желаю дальнейших успехов в этом нелегком начинании!

спасибо :)

P.S Таки да, пока я не знал Smalltalk, код на Objective C казался мне неведомой хузверушкой

да, кстати.. это же родные братья.

P.P.S А почему не MonoTouch? =)

он же платный.. и мак требует. зачем он нужен, если там и так XCode есть.

mono ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.