Ich habe eine Reihe von Beiträgen zum Thema Delegierte gesehen und würde gerne wissen, wie man sie richtig referenziert. Angenommen, ich habe ein Objekt deklariert wie:
@interface MyViewController : UITableViewController {
id delegate;
}
@property (nonatomic, retain) id delegate;
@end
Während des gesamten Lebenszyklus von MyViewController
wird es als Reaktion auf die Interaktion mit dem Benutzer Methoden seines Delegaten aufrufen.
Wenn es an der Zeit ist, eine Instanz von MyViewController
ist die delegate
ivar sein müssen release
in der Umsetzung der dealloc
Methode, da sie mit retain
?
Oder andersherum, sollte delegate
überhaupt beibehalten werden? Vielleicht sollte es sein @property (nonatomic, assign) id delegate
? Nach Angaben von Apples Dokumente :
beibehalten ... Sie verwenden dieses Attribut in der Regel für skalare Typen wie NSInteger und CGRect oder (in einer Umgebung mit Referenzzählung) für Objekte, die Sie nicht besitzen, wie z. B. Delegates.
Normalerweise würde ich mich einfach an das halten, was die Dokumentation sagt, aber ich habe eine Menge Code gesehen, der retain
auf einen Delegaten. Ist dies nur "schlechter Code"? Ich verlasse mich hier auf die Experten... Was ist der richtige Weg, um dies zu behandeln?