关于此功能的一个非常奇怪的行为,
void* getNSString(const NSString* str){
str = @"This is new test";
//NSString* str1 = @"so strange test";
return;
}
然后
NSLog(@"%@",getNSString(@"test"));
结果将是
This is new test
如果取消注释
NSString* str1 = @"so strange test";
我的理解是没有返回任何内容,因此应该为NULL,为什么要打印出那些字符串?
然后结果将是
so strange test
答案 0 :(得分:10)
我不相信没有会被退回。我相信这是不确定的。换句话说,任何东西都可以归还。
在这种情况下,看起来它正在返回发生在给定位置的堆栈上的任何内容。这恰好是你修改或创建的字符串之一,但我可以向你保证这是一个幸运的事故(或者不幸,因为崩溃可能会更好)。
如果您不想返回任何内容,则需要更改:
void* getNSString(const NSString* str){
为:
void getNSString(const NSString* str){
答案 1 :(得分:0)
cocoa / objective c就是这样做的......我之前也遇到过这种类型的问题,
例如:
-(NSObject*) someMethod ()
{ ...
NSString* result =@"some value";
// because too busy ,I just forgot write the return statement during dev :)
}
虽然没有像上面代码那样返回,但应用程序也可以返回结果值....
这很有趣......