For*_*est 1 iphone objective-c nsstring
这个函数的一个非常奇怪的行为,
void* getNSString(const NSString* str){
str = @"This is new test";
//NSString* str1 = @"so strange test";
return;
}
Run Code Online (Sandbox Code Playgroud)
然后
NSLog(@"%@",getNSString(@"test"));
Run Code Online (Sandbox Code Playgroud)
结果将是
This is new test
Run Code Online (Sandbox Code Playgroud)
如果取消注释
NSString* str1 = @"so strange test";
Run Code Online (Sandbox Code Playgroud)
我的理解是没有返回任何内容,所以应该为NULL,为什么打印出那些字符串?
然后结果将是
so strange test
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 10
我不相信没有任何回报.我相信这是不确定的.换句话说,任何东西都可以归还.
在这种情况下,看起来它正在返回发生在给定位置的堆栈上的任何内容.这恰好是你修改或创建的字符串之一,但我可以向你保证这是一个幸运的事故(或者不幸,因为崩溃可能会更好).
如果您不想返回任何内容,则需要更改:
void* getNSString(const NSString* str){
Run Code Online (Sandbox Code Playgroud)
至:
void getNSString(const NSString* str){
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |