2015-04-12 27 views
-2
NSMutableString *stringA = [[NSMutableString alloc] init]; 
NSMutableString *stringB = [[NSMutableString alloc] init]; 
stringB = (NSMutableString *)stringA; 

从现在起,stringB指向相同的地址字符串答:我不明白为什么我写这篇文章:为什么我必须指定(*的NSMutableString)在Objective-C

stringB = (NSMutableString *)stringA; 

,而不是这样的:

stringB = stringA 

,因为他们两人都已经被声明为指针的NSMutableString。

+2

谁说你这样做? –

+0

请解释你为什么认为演员是需要的(因为它不是)。 – rmaddy

+0

我有一个更复杂的代码,并且该错误是由其他内容引起的。我也知道这不是必要的,但我确信这是错误,而且我发现它很尴尬。我不会发布整个代码,因为我发现了真正的bug,并且与演员阵营无关。所以是的,演员是完全没有必要的。 –

回答

1

你不明白,因为这是无稽之谈。

您创建了一个可变字符串并在stringA中存储了一个指针。

您创建了另一个可变字符串并在stringB中存储了一个指针。

然后您将第一个指针存储在第二个变量中,这将摆脱第二个可变字符串。第二个alloc/init毫无意义,只不过是浪费代码和时间。演员绝对没有必要。

+0

stringB = stringA不起作用,它只适用于投射,请尝试。铸造是必要的,否则你不能在第二个变量中存储第一个字符串的指针。这就是我要问的,为什么必要的演员? –

+0

@BogdanPop - 演员**不是必需的。 –

+0

是的,你是对的。该错误是在别的地方。 –

相关问题