2009-10-06 25 views
11

Ya da + (void) 'in tersi nedir?Hedef C - Global statik değişkenleri nerede karşılarsınız?

: fonksiyonu olarak Unit.m dosyasında tanımlanan lazily oluşturulan küresel bir NSDictionary, gelen verileri alır: (id) initWithName - Kimin bir sınıf Birimi, sahip

: Burada

benim durum

statik NSMutableDictionary * birimLibrary = nil;

[unitLibrary release] 'i nereden ararım?

cevap

13

Artık sözlüğün artık gerekli olmadığını bildiğiniz bir yerde arayabilirsiniz. Uygulamanın tüm kullanım ömrü boyunca gerekliyse, uygulama sona erdiğinde tüm anıların işletim sistemi tarafından geri alınacağından hiçbir şey yapmanız gerekmez.

+0

Bu, iphone'da olduğundan herhangi bir bellek sızıntısı olamaz. Kullanıcı giriş düğmesine bastığında ve uygulamadan çıktığında, tüm yığınım ayrılmış durumda mı? – abtree

+1

Evet, eve gittiklerinde, tüm adres alanınız yığınınız dahil olmak üzere elden çıkarılır. –

+2

Evi yıkmadan hemen önce bahar temizliği yapmanıza gerek yok. Uygulamanın sonlandırılması yeterli ve daha hızlı serbest bırakılır. – PeyloW

3

Genel amaçlı bir yanıt yok. Tekrar kullanılmayacağından emin olduğunuzda onu ayırmanız gerekir. Olası adaylar, applicationWillTerminate delege iletisinde veya atexit() işlevinde olabilir.

+0

Uygulama sona erdiğinde nesneleri serbest bırakmanın bir anlamı yok - bellek zaten serbest bırakılmak üzere. – Chuck

+0

Evet, bu kötü - sadece işletim sisteminin temizlemesine izin verin. Burada iş yapmanın bir anlamı yok. Sadece uygulamayı bırakmayı geciktiriyorsun. – Ken

+1

Sızıntı tespit araçlarının ürettiği dağınıklık miktarını azaltmak, tartışmasız yararlıdır. Ama muhtemelen çabaya değmez. –

İlgili konular