2012-04-23 4 views
6

Ich speichere meine Blöcke, während mein Webservice abläuft und mit meinem Server spricht. Daher verwende ich [myBlock copy], um einen Verweis auf meinen Block zu behalten.Wie man einen Block freigibt

Sobald ich meine Daten habe und den Block ausgeführt habe, rufe ich [myBlock release], oder verwende ich Block_release(myBlock)? Ich kann auf beide verweisen.

+0

. Sie haben keinen Unterschied –

Antwort

9

Block_release() ist da, wenn Sie nur Blöcke in C und nicht Objective-C verwenden.

Wenn Sie Objective-C verwenden, können Sie die Methoden release und copy verwenden, damit Ihr Code mehr wie der Rest des ObjC aussieht und sich anfühlt.

Ich denke, dass beide genau dasselbe tun, und dass die objc-Methode nur ein Wrapper um den Anruf zu Block_release() ist sowieso.

5

Wie it's explained in reference Die Summe von Kopie/Freigabe muss gleich Null sein. Wenn Sie also Objective-C verwenden, können Sie [block copy] und damit [block release] anrufen. Wenn Sie C verwenden, müssen Sie Block_copy() und Block_release() verwenden.

Wie Jasarien geschrieben hat, tun sie wahrscheinlich das Gleiche, also können Sie sie austauschbar verwenden. Es ist jedoch wichtig, die Konvention konsistent zu halten. Wenn Sie also [block copy] verwenden, verwenden Sie lieber [block release] als Block_release()