6

Я хочу использовать двойной указатель, и я попытался объявить вот так.Как объявить переменную NSString с двойной стрелкой

NSString **a; 

но Xcode показал мне ошибку «указатель на неконстантного типа„NSString *“, без явного собственности», и это не может быть скомпилирован.

Наконец-то я хочу сделать это.

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

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

Дайте мне знать, пожалуйста, сообщите.

+0

Код, который вы указали, является полностью законным. Без лишнего контекста я не думаю, что мы можем ответить на ваш вопрос. –

+1

@CarlNorum За исключением случаев, когда в изображение входит автоматическое определение «smartass» - повторный подсчет ... Затем он заставляет компилятор жаловаться на каждый небольшой импульс ... – 2013-02-28 22:19:30

+0

О, я вижу ... забыл об этом. ARC новее, чем когда я прекратил писать любой код Objective-C. –

ответ

11

Изменение к этому, так что вы можете явно указать владельца:

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

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

Выход:

c 

Here is the documentation на __strong.

+1

Спасибо! Да, это прекрасный ответ :) –

+0

Ive видел кучу кода objc с декларациями имен типа **. Это устарело? – mihai

Смежные вопросы