Ich versuche, die empfohlene Vorgehensweise zum Festlegen von Standardwerten für NSString-Eigenschaften zu ermitteln.Festlegen von Standardwerten für NSString-Eigenschaften
Ich verstehe, dass es nicht sicher ist, Accessor-Methoden in einer Klasse init-und Dealloc-Methoden zu verwenden. Ich habe oft String-Konstanten, denen ich Standardwerte zuweisen möchte. Was ist der empfohlene Weg dies zu tun (unter Berücksichtigung der iVar wird in der Dealloc-Methode veröffentlicht werden)?
Zum Beispiel habe ich folgendes verstehen ist unsicher:
@property (nonatomic, copy) NSString *identifier;
....
- (id) init
{
self = [super initWithLayer:displayLayer];
if (self != nil)
{
self.identifier = @"fireSpell01";
}
return self;
}
es in Ordnung ist, oder empfehlen, dies zu tun:
identifier = [@"fireSpell01" retain];
Oder muss ich dies tun:
identifier = [[NSString stringWithString:@"fireSpell01"] retain];
Ist es in Ordnung, wenn eine Freigabe beim Identifizieren (während des Deallocs) aufgerufen wird, als sie direkt zugewiesen wurde, wie Sie vorschlagen? –
@Jay Ja. Es ist sicher, 'retain' und' release' für String-Konstanten aufzurufen. Es würde sonst keinen Sinn ergeben - eine Methode, die einen 'NSString *' empfängt, weiß nicht, wie sie zugewiesen wurde und muss in der Lage sein, sie auf die gleiche Weise zu behandeln. – walkytalky