Nie takie iPhone SDK straszne jak je malująWspomniałem ostatnio, że będę pisał więcej w związku z projektami nad którymi powoli pracuję. Na razie nie ma co pokazywać, więc postanowiłem napisać kilka słów o tym jak wygląda praca przy pisaniu czegoś na iPhone i ewentualnie dać jakieś drobne wskazówki.
To co może na samym początku przestraszyć to Objective-C. Na szczęście nie jest to problem, bo bardzo łatwo jest łączyć ten język z funkcjami pisanymi w C/C++. Przez to stanowi on tylko spoiwo między aplikacją (a przynajmniej w moim przypadku) a urządzeniem. W tej chwili większość kodu Objective-C w moim projekcie to szkielet aplikacji OpenGL ES dostarczany z xcode -- nie jest tego dużo i w żaden sposób nie przeszkadza w normalnej pracy. Jeżeli potrzebna jest jakaś funkcjonalność z systemu, w sieci można znaleźć gotowe kawałki kodu.
Do uruchomienia swojego kodu na iPhone przygotowywałem się już od jakiegoś czasu -- przeniosłem rendering z Direct3D do OpenGL ES 1.0 i zrobiłem spory refactoring. Gdy położyłem już swoje ręce na odpowiednim sprzęcie, uruchomienie na symulatorze zajęło jeden dzień. Po tym jak zapłaciłem za dostęp do programu developerskiego wystarczył jeden wieczór (spędzony na generowaniu certyfikatów), żeby uruchomić na sprzęcie. Spodziewałem się, że zajmie mi to więcej czasu, ale na szczęście poszło dość sprawnie -- w sumie nic dziwnego, bo na razie nie robiłem nic zaawansowanego.
Aktualnie projekt ściągnięty z repozytorium kompiluje się bez problemów pod xcode jak i w Visual Studio pod Windows. Zdecydowanie wolę pracę z tą drugą platformą i taka przenośność jest bardzo wygodna. Przydaje się implementacja OpenGL ES pod windows, żeby mieć pewność, że obejdzie się bez problemów.
Żeby nie było, że smęcę bez sensu i tylko korzystam z tego co znajdę gotowe w sieci, poniżej zamieszczam dwa kawałki kodu w dziwacznym języku, które mogą się komuś przydać. Nic odkrywczego, ale od czegoś trzeba zacząć ;)
// ukrycie górnej belki aplikacji, do użycia w widoku [[UIApplication sharedApplication] setStatusBarHidden:YES];
// pobranie nazwy katalogu, w którym znajdują się zasoby
const char* getResourcesPath()
{
NSString* path = [[NSBundle mainBundle] resourcePath];
return [path UTF8String];
}
Dodaj komentarz