2010-11-20 12 views
-1

Sadece bir soru var "Uygulama arka plana giderken nasıl doğru dealloc nesnesi?". Bazı uygulama üzerinde çalışıyorum, her şey harika ve iyi çalışıyor. Uygulamayı arka plana koyar ve tekrar başlattığımda tekrar kilitlenir. Hemen değil (app, kapattığım yerde yıldız), ancak bazı hücreler seçtiğimde veya sadece tablo görünümünü kaydırdığımda. Bu yüzden, uygulama çağrılarının zaten veriyi serbest bıraktığından eminim. BuradaUygulama arka plana ne zaman gidilir?

dealloc Herhangi tavsiyede

- (void)dealloc { 


    [anObject release]; 
    [array release]; 
    [locationManager release]; 
    [currentLatitude release]; 
    [currentLongitude release]; 
    [filteredListContent release]; 
    [super dealloc]; 
} 

bir örnektir?

cevap

0

ben gözden geçirmek ve kendi kod-yazma yeniden. Sorun hafızanın ayrılmasında beklediğim gibi oldu. Yapmamam gereken yerde autorelease kullandım. Yine de garip çünkü tekrar açtığımda uygulamanın çökmesine sebep oldu.

Herkese teşekkürler, bana 2 negatif hediye vermeyen siz değilsiniz, gerizeksiniz. Rahatsız etme, ama bazı tavsiyelerde bulunmak yerine sadece yüzsüz negatifler verirsiniz.

1

Özellikle uygulamanızın delegesinin applicationDidEnterBackground yöntemindeki öğeleri ayırmazsanız, otomatik olarak hiçbir şey sizin için ayrılmamalıdır.

Yaşadığınız sorunu hiç yaşamadım. Bir şeyden sonra arka plana koymasanız bile, aynı şeyin gerçekleşmediğinden emin misiniz?

İşte arkatasar şeyler hep birlikte nasıl uyduğunu iyi bir açıklama verilmiştir:

Understanding iOS 4 Backgrounding and Delegate Messaging

0

Böyle bir nesneyi asla serbest bırakmayın. Kullanın

- (void)dealloc { 

if(anObject){ 
[anObject release]; 
anObject = nil; 
} 
if(array){ 
[array release]; 
array = nil; 
} 
//same approach for all. 

[super dealloc]; 
}