2012-04-23 12 views
6

Przechowuję swoje bloki, gdy usługa sieciowa jest wyłączona i rozmawia z moim serwerem. Dlatego używam [myBlock copy], aby zachować odniesienie do mojego bloku.Jak zwolnić blok

Po otrzymaniu danych i wykonaniu bloku, czy mogę zadzwonić pod numer [myBlock release], czy też mogę użyć Block_release(myBlock)? Mogę znaleźć odniesienie do obu.

+0

nie ma różnicy –

Odpowiedz

9

Block_release() jest tam, gdy używasz tylko bloków w C, a nie Objective-C.

Podczas używania Objective-C możesz użyć metod release i copy, aby Twój kod wyglądał jak reszta ObjC wokół niego.

Wyobrażam sobie, że obaj robią dokładnie to samo i że metoda objc jest tak czy inaczej owinięta wokół połączenia z numerem Block_release().

5

As it's explained in reference Suma kopii/zwolnienia musi być równa zero. Więc jeśli używasz Objective-C, możesz zadzwonić pod numer [block copy], a tym samym [block release].

Jeśli używasz C, powinieneś użyć Block_copy() i Block_release().

Jak napisał Jasarien, prawdopodobnie robią to samo, więc można ich używać zamiennie. Jednak ważne jest, aby zachować spójność konwencji - tak więc podczas korzystania z [block copy] wolisz używać [block release] niż Block_release()