Ich habe mein Projekt auf ARC geschaltet, und ich verstehe nicht, ob ich strong
oder weak
für IBOutlets verwenden muss. Xcode dies tun: in Interface Builder, wenn ein ein UILabel
zum Beispiel schaffen und ich verbinde es mit Schnittassistenz meiner ViewController
, es folgt zu erstellen:schwach oder stark für IBOutlet und andere
@property (nonatomic, strong) UILabel *aLabel;
Es nutzt die strong
, stattdessen las ich ein Tutorial auf RayWenderlich Website das sagen:
Aber für diese beiden besonderen Eigenschaften habe ich andere Pläne. Anstelle von
strong
werden wir sie alsweak
deklarieren.
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
Weak
ist das empfohlene Verhältnis für alle Auslass Eigenschaften. Diese Ansichtsobjekte sind bereits Teil der View-Hierarchie des View-Controllers und müssen nicht an anderer Stelle gespeichert werden. Der große Vorteil des Erklärens Ihrer Steckdosenweak
ist, dass es Ihnen Zeit spart, die viewDidUnload Methode zu schreiben.Zurzeit sind unsere
viewDidUnload
sieht wie folgt aus:
- (void)viewDidUnload
{
[super viewDidUnload];
self.tableView = nil;
self.searchBar = nil;
soundEffect = nil;
}
Sie jetzt an folgende vereinfachen kann:
- (void)viewDidUnload
{
[super viewDidUnload];
soundEffect = nil;
}
So weak
, anstelle des strong
und entferne den Satz auf null in videDidUnload
, stattdessen verwende Xcode th e strong
, und verwenden Sie die self... = nil
in der viewDidUnload
.
Meine Frage ist: Wann muss ich strong
verwenden, und wenn weak
? Ich möchte auch für die Bereitstellung von Ziel iOS 4 verwenden, also wann muss ich die unsafe_unretain
verwenden? Wer kann mir helfen, mich mit einem kleinen Tutorial gut zu erklären, wenn man mit ARC strong
, weak
und unsafe_unretain
benutzt?
danke für die antwort – Piero
du sagst das, für iboutlet wenn ich stark benutze muss ich nil in viewdidunload verwenden, und für wenig speicher habe ich keine leckstellen, stattdessen mit schwachem muss ich nil nicht in videwdidunlaod verwenden, und für wenig speicher warnen, es ist besser, die starke Lösung oder die schwache? – Piero
Es ist das gleiche. Mit 'schwach' können Sie Zeit beim Schreiben von Code (zwei Zeilen in Ihrem Fall) von Hand sparen. Aber Xcode macht es für Sie. Meine persönliche Meinung. Ich benutze gerne 'stark'. –