2011-10-12 14 views
5

w Xcode 4.2 Znalazłem to bardzo frustrujące, ponieważ nie można używać:Jak zwolnić pamięć w Xcode 4.2?

-(void)dealloc { 
[label release]; //'release' is unavailable 
[super dealloc]; //'dealloc' is forbidden in automatic reference counting 
} 

Czy istnieje inny sposób, ponieważ autorelease i inne deallocs nie działa.

+0

... ty nie. O ile nie masz swojego projektu z ręcznym zarządzaniem pamięcią. – JoePasq

+0

, więc nie dostanę ostrzeżenia o pamięci, nawet jeśli nie zwolniłem pamięci? – iphonemaniac

+0

Nie mogę powiedzieć ze szczytu mojej głowy. Sprawdź dokumenty na ten temat, nie sądzę, że ostrzeżenia o pamięci zniknęły, zwłaszcza w przypadku iPhone'a 3GS wciąż dostępnego na rynku. – JoePasq

Odpowiedz

9

Xcode 4.2 wprowadza "automatycznego zliczania odniesienia" (aka ARC). Jest to funkcja kompilatora, która po prostu wstawia i zachowuje wywołania dla Ciebie. W ARC, jeśli masz wskaźnik do obiektu, zatrzymujesz go. Gdy wskaźnik wykracza poza zakres lub jest ponownie przypisany do innego obiektu, oryginalny obiekt zostaje zwolniony. To naprawdę miłe.

Tak, w skrócie, po prostu usunąć wszystkie połączenia do retain, release i autorelease i kompilator zrobi dobry uczynek dla ciebie.

+0

To jest niesamowite! – iphonemaniac

1

Odczytywanie z automatycznego liczenia odnośników. Jeśli prawidłowo napiszesz swój kod, nie musisz już tego robić.

Jeśli chcesz użyć starego kodu bez konwersji, wyłącz ARC. wstaw -fno-objc-arc w flagach kompilatora dla dowolnych modułów źródłowych, których nie chcesz używać ARC.

Joe

+0

Jak poprawnie napisać kod? – iphonemaniac

+0

Czy to ma znaczenie, że nie zwolniłem pamięci? – iphonemaniac

+0

Nie, nie byłoby to – iphonemaniac

Powiązane problemy