ios中处理错误为什么传递的是&error,而不是error?
2个回答
展开全部
因为 需要将error 传入后修改其值,然后再返回来,返回来后还要保证己经修改过了。
&error传入是传的地址引用,传入后处理函数直接访问变量的地址,可以修改其值再返回同一个地址, 调用函数就可以知道值是否有修改,即是否有错
而error传入是传的值引用,值引用传入到程序栈中后其实是把原来的值复制了一份传过去,处理函数可以修改,但无法将改后的值传出函数体。
最简单的理解方法是做个例子
设你有一个用户信息类,包含 用户资料
UserInfo *user = .....
user.userID = @"1111";
你将它传到一个处理函数中
void changeUserIDWithUser: (NSString *)UserInfo userinfo{
userinfo.userID = @"2222";
}
NSLog(@"userid = %@", userinfo.userID);
你看看打印出来的内容是什么就知道了。
&error传入是传的地址引用,传入后处理函数直接访问变量的地址,可以修改其值再返回同一个地址, 调用函数就可以知道值是否有修改,即是否有错
而error传入是传的值引用,值引用传入到程序栈中后其实是把原来的值复制了一份传过去,处理函数可以修改,但无法将改后的值传出函数体。
最简单的理解方法是做个例子
设你有一个用户信息类,包含 用户资料
UserInfo *user = .....
user.userID = @"1111";
你将它传到一个处理函数中
void changeUserIDWithUser: (NSString *)UserInfo userinfo{
userinfo.userID = @"2222";
}
NSLog(@"userid = %@", userinfo.userID);
你看看打印出来的内容是什么就知道了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询