6

Chcę używać podwójnego wskaźnika i próbowałem zadeklarować w ten sposób.jak zadeklarować zmienną NSString z podwójnym wskaźnikiem

NSString **a; 

ale Xcode pokazał mi błąd „wskaźnik do const typu«NSString *»bez wyraźnej własności”, a to nie może być skompilowany.

W końcu chcę to zrobić.

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

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

Daj mi znać, proszę o radę.

+0

Kod, który pokazałeś, jest całkowicie legalny. Bez większego kontekstu nie sądzę, że możemy odpowiedzieć na twoje pytanie. –

+1

@CarlNorum Z wyjątkiem sytuacji, gdy do obrazka przychodzi automatyczne "inteligentne" liczenie referencji ... Wtedy kompilator narzeka na każdy mały pęd ... –

+0

Och, widzę ... zapomniałem o tym. ARC jest nowsza niż wtedy, gdy przestałem pisać kod Objective-C. –

Odpowiedz

11

Zmień to, aby można było jednoznacznie określić własności:

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

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

wyjściowa:

c 

Here is the documentation na __strong.

+1

Dzięki! Tak, to jest idealna odpowiedź :) –

+0

Widziałem mnóstwo kodu objc z deklaracjami typu ** typu. Czy to jest przestarzałe? – mihai