6

Ich möchte Doppelzeiger verwenden und ich versuchte, so zu deklarieren.wie Variable NSString mit Doppelzeiger zu deklarieren

NSString **a; 

aber zeigte Xcode mir den Fehler „Zeiger auf nicht-const Typen‚NSString *‘ohne ausdrückliches Eigentum“ und es nicht kompiliert werden kann.

Endlich möchte ich so tun.

NSString **a; 
NSString *b = @"b"; 
NSString *c = @"c"; 
a = &b; 
*a = c; 

NSLog(@"%@",b);//I wanna see "c" 

Lassen Sie mich bitte jede beraten Sie bitte.

+0

Der Code, den Sie angezeigt haben, ist absolut legal. Ohne weiteren Zusammenhang glaube ich nicht, dass wir Ihre Frage beantworten können. –

+1

@CarlNorum Außer wenn Automatic- "Smartass" -Referenz-Zählen ins Bild kommt ... Dann bringt es den Compiler dazu sich über jeden kleinen Impuls zu beklagen ... –

+0

Oh ich verstehe ... habe das vergessen. ARC ist neuer als wenn ich keinen Objective-C-Code mehr schrieb. –

Antwort

11

Änderung dieser so dass Sie explizit das Eigentum angeben:

NSString *__strong *a; 
NSString *b = @"b"; 
NSString *c = @"c"; 
a = &b; 
*a = c; 

NSLog(@"%@",b);//I wanna see "c" 

Ausgang:

c 

Here is the documentation auf __strong.

+1

Danke! Ja, das ist die perfekte Antwort :) –

+0

Ich habe eine Reihe von Objc-Code mit Type ** Name Deklarationen gesehen. War das veraltet? – mihai