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

您显示的代码完全合法。没有更多的背景,我认为我们不能回答你的问题。 – 2013-02-28 22:19:01

+1

@CarlNorum除了自动 - “smartass” - 引用计数进入图像...然后它使编译器抱怨每一个小动量... – 2013-02-28 22:19:30

+0

哦,我看到...忘了这一点。 ARC比我停止编写任何Objective-C代码时更新。 – 2013-02-28 22:20:00

回答

11

更改到这一点,以便可以明确所有权:

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

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

输出:对__strong

c 

Here is the documentation

+1

谢谢!是的,这是完美的答案:) – 2013-02-28 22:27:34

+0

我看到一堆objc代码与类型**名称声明。这是否被弃用? – mihai 2014-10-29 03:01:11