HTML

Minket az XMS szponzorál

Friss topikok

  • Csanády István: najó gyerekek, sicc a developers.iphonehungary.hu-ra légyszi, postolok a dolgokról egyet. (2008.08.20. 12:10) SEGÍTSÉG!
  • Csabi: Mondjuk ez elég rosszul hangzik. Miért probléma a rossz cím a szerződésben? Az AppStore-os bevétel... (2008.08.06. 12:23) Jogi útvesztők
  • kivancsi: Igen, erre már a postból is rájöttem, de konkrétan melyikre? (2008.08.01. 10:53) Örülés, tapsikolás
  • Bryton: Remélem sikerült megkapni a dev certificate-et, nekünk a UK Store-on keresztül simán ment... (2008.07.25. 18:42) Jogi aggályok
  • Barna: írjátok!! (2008.07.22. 14:58) Magyarázzuk a bizonyítványt

Linkblog

Miért szopás iPhone-ra fejleszteni

2008.07.03. 16:11 :: iphonedevel

Elsősorban az Xcode miatt, másodsorban az Objective C miatt. (Lehet hogy négány dologban nincs igazam, vagy csak a beta miatt van de akkor is...) Hat érv az ellen amit csinálunk:)

Objective C 1

A Perl után a világ legocsmányabb nyelve höhö.... Elvileg OOP, és végülis tényleg az, de rengeteg fícsör híányzik belőle, amit az ember C++-ban illetve Java-ban megszokott. Nem tudsz példálul függvényeknél láthatóságot állítani, csak tagváltozóknál. Nincs osztályváltozó csak osztálymetódus. Ami nem baj, csak furcsa, az az hogy az osztályt interface-nek hívják, az interface-t pedig protocolnak, amit azzal indokolnak meg hogy amit te leírsz az nem az osztályod, hanem az osztályod FELÜLETE, ami módszertanilag igaz, de hogy miért kellett a jól megszokott terminológiától eltérni, az érthetetlen.

Objective C 2

Külön fejezet van a OC doksijában arról hogy hogyan lehet OC és C++ kódot együtt használni... Elvileg. Azonban egy kis guglizás után rájössz hogy nagyjából sehogy. Annyi szenvedés összerakni a C++ kódot az OC-vel hogy jobban megéri portolni.

Xcode 1

Használtam már jó sok IDE-t, eclipse, MS különböző IDE-it, de még a Dev-C++-t vagy Code::Blocksot is, de az Xcode ha nem is mondom hogy mindet alulmúlja, de iszonyat szívások vannak vele. Kitörölsz egy forrásfájlt, majd fél óra múlva fordítasz egyet, és még mindig bele akarja fordítani. Király. (Megjegyzem lehet nem szeretni az MS-t de a fejlesztő környezeteik fantasztikusak.)

Xcode 2

Csomószor van olyan hogy kapok iszonyat linker errort, olyan symbolokra amiket nem is én írtam, tehát valami standard könytárbeli cuccra, pedig csak #import  direktívát használok, ami elvileg okos include, olyan mint a Java importja. Sebaj rebuild all. Semmi változás. Clean all targets. Semmi. Kézzel kitörlök mindent, semmi. Újra indítom az Xcode-ot erre lefordítja. Na köszi.

Xcode 3

Na hát ez volt az egyik kedvencem... Csinálok egy sima szövegfájlt az IDE-n belül, és egy kis kód használta volna azt. Megírom, lefordítom elszáll... Na gondolom rossz a parser, vagy valamit elírtam a szövegben. Egy órán át debuggoltam, végül látom hogy nem tudja megnyitni a fájlt (normális ember ezt nézné meg először, nem?:P). Erre kiderült hogy az Xcode az IDE-n belül létrehozott szövegfájlomat nem másolta bele a resource-ok közé, pedig eddig mindig. Nosza, kézzel belerakom, láss csodát megy.

iPhone SDK finomságok

Én elfogadom hogy nagy a hajtás az Apple-nél, és tényleg rövid idő alatt kellett összerakni az SDK-t, de hogy ennyire aluldokumentált legyen az hihetetlen. Következő érdekes dolog történt... Nézegettük hogy a hang manager-ünket mibe írjuk, egyértelműnek tűnt az OpenAL, de sehogy sem sikerült működésre bírnunk, találtunk is egy (azaz 1 db) fórumtémát erről az apple.com-on de ott sem írtak semmit, nem válaszoltak. Na sebaj, legyen CoreAudio, ami az Apple saját audio apija. Iszonyatosan profi, nagyon robosztus, nagyon masszív, és nagyon bonyolult. Nekiálltam elolvasni a doksit, 80-ik oldal környékén bukkantam rá az OpenAL-ről szóló két mondatra, amiből kiderült hogy a OpenAL csak egy wrapper a CoreAudio fölé (!!!), magyarul az OpenAL-nek ami az ájfónon van semmi köze az igazi AL-hez. Biztonság kedvéért én is feltettem a kérdést az Apple fórumain, hátha írnak valamit, következő nap válaszolt valaki, hogy az AL csak device-on megy, szimulátoron nem, viszont device-on full featured.. Kösz. Apple-ék képtelenek voltak egy mondatot írni erről. Köszönjük, mínusz két munkanap.

28 komment

A bejegyzés trackback címe:

https://iphonedevel.blog.hu/api/trackback/id/tr87551579

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

ninja 2008.07.03. 19:23:36

Ha már azt hiszed ennél rosszabb nem lehet, akkor ajánlom a symbiant... különösen a UIQ kütyükre...

Nzoltan 2008.07.03. 19:45:01

Nem fejlesztettél anno ps2-re. Akkor sírtál volna.
Tudni kell programozni, és nem óbégatni.

hari 2008.07.03. 19:45:26

"A Perl után a világ legocsmányabb nyelve höhö ..."

Innentől a többi már csak hab a tortán, de mint tudjuk a butaság határtalan ...

gabest1 2008.07.03. 19:53:55

Nzoltan: azz, ps2-nél nincs gonoszabb állatfajta.

iphonedevel 2008.07.03. 19:58:10

hari: azért amiket leírtam azok nyilván dramatizálva vannak... miért vagyok buta? az meg hogy nem szeretem a perlt az legyen az én bajom.

Nzoltan: fejlesztettél PS2-re? mit? kódolni meg majd megtanulunk. ha nagyok leszünk. addig csak pötyögünk.

zooli · http://zooli.pardey.org/ 2008.07.03. 20:00:27

hi arcok!

enis fejlesztgetek eztazt az ifonra, es a dolgok nagyreszevel egyet is tudok erteni, foleg az aluldokumentaltsaggal, bar ez szerintem egyelore azert van mert 2.0 megjeleneseig nem irhat elvileg senkise semmirol, sztem azutan sok igazi develblog indul aztan lehet okulni az emberek tapasztalataibol.
objective c mondjuk sztem egesz megszokhato

ja az xcode csinal neha furcsasagokat, mondjuk azon annyira nem is lepodok meg, netbeans durvabbakat muvelt neha :)

az olvasottak alapjan meg ti sem teszteltek eszkozon, gondolom akkor tisem kerultetek meg be az appstoreba?

FeAt 2008.07.03. 20:04:36

Első gondolat: Hajrá!
Aztán meg: Legyetek nyitottabbak!
Továbbá: az Objective-C-nek semmi köze a C++-hoz. A jól megszokott környezet után minden más kényelmetlen és "szopás benne a fejlesztés"
13évvel a hátam mögött megtapasztaltam én is, a jól megszokott Borland környezet után a NetBeans, aztán az Eclipse... Aztán a Visual akármik... mindegyiket meg kell szokni és ki kell tapasztalni...
Végül: Hajrá! Barátkozzatok meg a cuccal és imádni fogjátok. Csak másképp kell hozzáállni mint egy MS VS IDE-hez.

iphonedevel 2008.07.03. 20:05:25

szia zooli mondd meg hogyhívnak!

jaja mi is csak simulatorban küldjük, szerintem 11-ig nem is nagyon fogunk kapni accountot... te mit fejlesztesz?

iphonedevel 2008.07.03. 20:06:32

feat
köszönjük kedvességed. igyekszünk, csak napi 12 óra kódolással fáradt az ember, aztán itt meg kipanaszkodhatjuk magunkat... tényleg nem olyan veszélyes amúgy...

Csabi 2008.07.03. 20:51:36

"A Perl után a világ legocsmányabb nyelve höhö...."

Nah, végülis itt abba kellett volna hagynom az olvasást. Mindenesetre mi is fejlesztünk iPhone-ra nagy erőkkel jelenleg, és a Symbian után maga a csoda. Programozni azonban tudni kell, de talán nem is baj, ez egyfajta természetes szűrőként fog működni. Kicsit uncsi volt a j2me (java me) világban, hogy minden második ember erős késztetést érzett arra, hogy kihozzon mobilra valami extra gagyi minőségű sudoku vagy poker programot, esetleg valami okádék, műdésképtelen felhasználói programot, és végül a rengeteg hulladék között elvesztek az igazi gyönygyszemek, lejáratva az amúgy sem túl jó platformot.
Az eclipse szerintem is jobb mint az xcode, bár az összehasonlítás kicsit sántít.

gusthy 2008.07.03. 20:54:25

Nemtom, én anno nagyon szerettem az OC-t... Amúgy nem az iPhone-hoz lett kitalálva, hanem anno a NextStep-hez csinálták (na kik? igen: ) Steve Jobs-ék :)
És az OpenStep is persze OC volt.

Szerintem is inkább megszokás kérdése h c++ vagy oc, és annyira soká nem tart átszokni...

mbazs 2008.07.03. 21:04:59

Az OC az micsoda? Csak érdeklődöm.
A C kiterjesztése?
C++ előtti cucc?

iphonedevel 2008.07.03. 21:13:43

Najó úgylátom azt a perles dolgot ki kellett volna hagyni, de igazából az nem a külvilágnak szólt, hanem a Pöttynek... Szóval elnézést a linux guruktól. OC az objective c, úgy van definiálva hogy a C egy részhlmaza az OC-nek, jó kezdeményezés szerintem csak egyszerűen az ember hiányol bizonyos dolgokat belőle, legalábbis én. Akik írták hogy fejlesztenek, akkor árulják el (ha nem titok) hogy mit?

mbazs 2008.07.03. 21:19:12

Perl az én meglátásom szerint egy jó kis nyelv, csak könnyen el lehet benne "kurvulni", azaz a kutya sem tudja elolvasni, hogy mit is akartál.

Számomra pl. a "post-if" undorító, amikor egy hosszú (eleve olvashatatlan) sor végén van egy meglepő "if". Nem tudom, ki hogy van vele, de ez szerintem rossz szokásokat alakít ki.
De kinek mi tetszik.

iphonedevel 2008.07.03. 21:19:17

Csabi: amúgy a szűrővel egyetértek, néha már már gyanús hogy szándékos a dolog:)

gusthy 2008.07.03. 21:20:53

Az úgy volt, hogy anno amikor az OOP "kitalálódott", elkezdték a C-t kiterjeszteni így. Két fő irány volt: A C++ meg az Objective-C (A GNU C compiler a mai napig támogatja mindkettőt).
Igazából eleinte mindkettő egy preprocesszorként kezdte, kicsit úgy, mint a fortranra a ratfor a strukturált programozás idején.
A fő különbség a C++ és az OC közt, hogy míg egy C program NEM automatikusan C++ program, egy C program automatikusan OC program is.
Minthogy a C++ terjedt el jobban, egy pár olyan nyelvi képesség nem fejlődött ki benne, ami a C++ késői változataiban már elérhető. Felfogásában inkább a "klasszikus" OOP megközelítést alkalmazza (pl messaging).
Ja, és van benne dynamic typing. Ez azért lényeges, mert azt szokták mondani, hogy nincs benne template, ami ugyan igaz, de a dynamic typing ezt sokszor helyettesíti.

Van OC2, amibe már raktak Java-like dolgokat, pl garbage collection, ilyesmi.

gusthy 2008.07.03. 21:21:41

Ja és nem mondhatjuk, hogy "C++ előtti", mert kb egyidősek, és a Mac világában ma is él.

mbazs 2008.07.03. 21:25:36

"messaging" az mit jelent?
"dynamic typing", az valami RTTI, C++ dynamic_cast-hoz hasonló vagy hogy?

csak érdekel, szeretek újat tanulni :)

dzson 2008.07.03. 21:30:40

Szerintem a gnouth_c3 - as rendszer a legnehezebb, ha föleg nincs benne és a bináris szegmens regressziójának ajtaján.

mbazs 2008.07.03. 21:36:03

amúgy számomra a Javascript a legbetegebb nyelv
(amit eddig láttam belőle)

fx 2008.07.03. 22:04:44

A JS beteg? Dehoooogy! Láttál már AWK-t? Na az az igazán beteg :)

Kúrcsány Ferenc 2008.07.03. 22:06:30

Agymosott Macbuziknak bármi jó.

iphonedevel 2008.07.03. 22:52:21

mbazs: en.wikipedia.org/wiki/Dynamic_typing#Dynamic_typing

A messaging pedig az hogy egy objektumnak nem metódusát hívod hanem üzenetet küldesz neki.
Tehát azt mondanád hogy
foo.my_f();
az OCben így néz ki:

[foo my_f];

de ilyen is lehet

void* foo = nil;
[foo my_f];
ez is lefut minden további nélkül. Legfeljebb nem válaszol. NULL-nak is küldhetsz üzenetet például... Na ez egy hasznos fícsör például.

tzs · http://www.glaskugel.hu 2008.07.03. 23:34:18

hát én csak webre fejlesztek phpban, meg xhtml+css, meg barátkozom a jqueryel, és rühellem az actionscriptet, de asszem csak a felszínt kapargatom:D

tzs · http://www.glaskugel.hu 2008.07.03. 23:35:45

mbazs, szerintem az actionscript, de az is javascriptbül van:D

benceb 2008.07.07. 17:22:46

Hello Csabi!

> Mindenesetre mi is fejlesztünk iPhone-ra nagy erőkkel jelenleg,
> és a Symbian után maga a csoda.

Én is symbianozok már egy ideje, és csak érdeklődés képpen megírnád, hogy mit fejlesztettetek, és hogy hol érhető el.

Ui.: Szerintem a symbiannál jobb OS/nyelvet még nem láttam. Persze igaz ami igaz, kell vele rendesen szívni, de ez csak rutin kérdése -no meg persze kitennyésztet lib-eké-. Nem akarok elméleti vitákba belemenni de azért mégiscsak egy nagyon robosztus és nagyon-nagyon biztonságos OS-ről van szó, talán a QNX-el vetekedően kicsi overheadel... Ez szerintem kúl... Ja és "mindent" meg lehet csinálni rá, nem úgy mint zseniális iPhone-unkra.

benceb

benceb 2008.07.07. 17:25:31

Ja még egy kis érdekesség azoknak akik még nincsenek tisztában vele:
cocoadevcentral.com/d/learn_objectivec/