解决方案 »
- 我在电脑网页上发布一条信息或者上传一个文件,那么如何在IPAD上显示提示
- 求教推送通知的概念!
- 第一次接触iPad开发,求助!
- icloud API,通过调用该DLL API,可以开发自己的icloud客户端与苹果公司的icloud服务器进行同步
- 关于iphone开发的框架
- ios 函数的参数作为输出。
- 如何在tableView的第一列添加输入框?
- 为什么我在table view cell中添加的按钮不显示
- AMD的CPU在虚拟机下安装黑苹果,装完后出现了问题
- ffmpeg 播放优酷视频问题
- iOS有没有阻塞式的弹出框
- MPMovieplayerControlle的视图中的快进后退按钮怎么获得?
你用@""实例化的字符串实际是一个常量(不可修改的),编译器对此有优化,常量字符串都是共享的。
void changeStr(NSString **str2)
{
*str2 = [[NSString alloc] initWithFormat:@"%s", "changeStrchangeStrchangeStrchangeStr"];
}
void my(NSString *ss){
NSLog(@"传入前的地址是%p -> %p -> %@",&ss,ss,ss);
*(&ss) = [[NSString alloc] initWithFormat:@"%s", "mymymymymymymymy"];
NSLog(@"%@", ss);
}int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str = [[NSString alloc] initWithFormat:@"%s", "456"];
NSLog(@"before changeStr %@",str);
changeStr(&str);
NSLog(@"after changeStr %@",str);
NSString *s = [[NSString alloc] initWithFormat:@"%s", "123"];
NSLog(@"传入前的地址是%p -> %p -> %@",&s,s,s);
my(s);
NSLog(@"after my %@",s);
}
return 0;
}
OC对象的指针,跟C/C++的指针有比较大的差别的,如果非要在函数中处理字符串且通过参数返回改变后的值,建议使用char指针或数组做参数来处理。