2010-10-04 14 views
7

Oluşturma: Constants in Objective-Cbu yazı yapılıyor ne gibi bir şey başarmak istiyorum sabit sözlük nesne

ancak ben bir NSDictionary inşa etmek istiyoruz.

i gibi bir şey yaparsanız:

constants.h

extern NSArray *const mFooKeys; 
extern NSArray *const mFooObjects; 
extern NSDictionary *const mFooDictionary; 

constants.m

NSArray *const mFooKeys = [[NSArray alloc] initWithObjects: 
            @"Foo", @"Bar", @"Baz", nil]; 
NSArray *const mFooObjects = [[NSArray alloc] initWithObjects: 
            @"1", @"2", @"3", nil]; 
NSDictionary *const mFooDictionary = [[NSDictionary alloc] dictionaryWithObjects:mFooObjects 
                     forKeys:mFooKeys]; 

i dealloc bırakın ve her şey gayet iyi, veya ona orada daha do ? Bu, 'yanlış olan bir şey' sorusundan daha temkinli bir sorudur, ama bunu fark etmeden bunu gerçekten mahvedebileceğimi hissediyorum.

cevap

5

, ya sabit kullanarak olacak sınıfta yer alır, ya da bir Singleton class oluşturmak ve orada NSDictionary saklamak gerekir. Baktığınız uygulamada çalışmayacak bazı sınıf türleri var; baktığınız sabitler kodunun doğru çalışması için bir nesne olarak kullanılması gerekiyordu, ama bence bu tarz bir yenilgi. Basit sabitler uygulamasında yapabildiğiniz ve yapamayacağınız şey için belirleyici faktör ne kadar açık değilim, ama aynı konuya ve Tekton tasarım modeline benim için mükemmel bir şekilde çalıştım. (Her iki durumda da, uygulamanın ömrü boyunca var olsalar bile dealloc'u uygun şekilde kullanmalısınız.)

0

Bunları sabit olarak bildiriyorsunuz, bu nedenle uygulamanızın ömrü boyunca sürecek tek nesnelerdir. Uygulama bırakılıncaya kadar ihtiyaç duydukları gibi serbest bırakmaya gerek yok.

İlgili sınıfın bir örneğinin ayrıştırıldığı her defasında yayımlanacağı için, dealloc içinde serbest bırakmak istemezsiniz. diğer temel veri türlerine göre bir NSDictionary gibi bir sabit olması için

İlgili konular