Witam
Czy w ObjC można stworzyć obiekt który będzie dostępny dla innych obiektów, tak jakby globalnie, czy zawsze trzeba przekazywać jego pointer innym obiektom, aby mogły korzystać z jego zmiennych i metod instancyjnych?
Witam
Czy w ObjC można stworzyć obiekt który będzie dostępny dla innych obiektów, tak jakby globalnie, czy zawsze trzeba przekazywać jego pointer innym obiektom, aby mogły korzystać z jego zmiennych i metod instancyjnych?
Ostatnio edytowane przez wojtkow ; 03.07.2011 o 13:57 Powód: ortografia!!!
Telefon: iPhone 4S 16GB
Odtwarzacz: iPod Nano 4G
Tablet: iPad2 3G 16G
WWW: http://www.tomaszbuziak.com
Komputer: MacBook Pro 13,3" 2,26GHz (Lion 10.7.3)
Telefon: iPhone 4S
Tablet: iPad 2 3G
dlaczego nie korzystasz z opcji szukaj?
http://ifiboughtyourappalreadycaniup...acappstore.com
Kawałek kodu jednej z moich klas (singleton zarządzający achievementami w grze). W klasie tworzysz jedną zmienną statyczną, która przechowuje wskaźnik do singletona. Zasada działania singletona jest taka, że tworzy on tylko jedną instancję.Kod:static KKAchievements *instanceOfKKAchievements; @implementation KKAchievements +(id) alloc { @synchronized(self) { NSAssert(instanceOfKKAchievements == nil, @"Attempted to allocate a second instance of the singleton: KKAchievements"); instanceOfKKAchievements = [[super alloc] retain]; return instanceOfKKAchievements; } // to avoid compiler warning return nil; } +(KKAchievements*) sharedKKAchievements { @synchronized(self) { if (instanceOfKKAchievements == nil) { [[KKAchievements alloc] init]; //[[GCCache activeCache] reset]; } return instanceOfKKAchievements; } // to avoid compiler warning return nil; }
Później w kodzie możesz się do niego odwołać:
Kod:KKAchievements* achievements = [KKAchievements sharedKKAchievements];
Moje aplikacje w AppStore:
Blicks.
Dzieki, znalazłem już przykład takiej klasy, właśnie ją implementuje w swoim projekcie.
Telefon: iPhone 4S 16GB
Odtwarzacz: iPod Nano 4G
Tablet: iPad2 3G 16G
WWW: http://www.tomaszbuziak.com
maly update do powyzszej metody. jest ona oczywiscie poprawna, ale zalecane obecnie jest wykorzystanie Grand Central Dispatch (GCD) i funkcja w/g 'nowych wytycznych' powinna wygladac tak:
Kod:+ (id) sharedInstance { static MyClass *instance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[MyClass alloc] init]; }); return instance; }
Komputer: iMac 27" iPhone4 iPad tv² +
WWW: http://www.tridrops.com
____________________________/"'\,,, WezUwiUsz_
Moja strona na FB
Moje aplikacje: Easy Cash, Dock Clock, Flat Cube, Crazy Emoji