ich in der Apple-Dokumentation über copyWithZone lesen:copyWithZone Rückgabewert Eigentums- und Beibehaltungszähler
„Das zurückgegebene Objekt ist implizit vom Absender erhalten, die sie für die Freigabe verantwortlich ist“.
Also, wenn ich das schreibe:
- (id)copyWithZone:(NSZone *)zone {
MyObject* obj = [[[[self class] allocWithZone:zone] init] autorelease];
[obj fillTheObj];
return obj;
}
und ich rufe:
MyStuff* obj = [varobj copy];
wird obj
beibehalten werden? Was ist mit der Retain-Anzahl, wenn ich keine Autorelease einstelle?
@Matthew Frederick: ok, also gibt es keine IMPLICIT behalten, wie Apple Dokumentation sagt. Es ist eine explizite aufgrund Ihres Codes? – Oliver
Lesen Sie meine bearbeitete Version. Da der Absender eine Kopie ausführt, behält sie diese jetzt implizit bei. Das ist ziemlich explizit für mich, aber das Wort "behalten" wird nirgends verwendet und macht es implizit. –
@Matthew Frederick: ok, also was, wenn ich die Autorelease entfernen? Es gibt ein Behalten innerhalb des Anrufs, und ein implizites außerhalb des Anrufs, nicht wahr? Mit anderen Worten, was ist IMPLICIT hier? Ich sehe nur explizite Dinge, oder es wird zwei behalten. – Oliver