我意识到这与现有帖子类似,(NSError**)错误是什么意思?,但我的问题有点不同.我理解双指针是如何工作的,以及这是常见的iOS API错误模式.我的问题更多的是关于单指针,以及为什么这段代码不起作用:
- (BOOL)someMethodWithError:(NSError *)error
{
...
if( errorOccured )
{
NSError *e = [[[NSError alloc] initWithDomain:@"" code:1 userInfo:nil] autorelease];
error = e;
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
实施使用:
NSError *error = nil;
if( ![someObj someMethodWithError:error] )
{
NSLog(@"Error: %@", [error localizedDescription]);
}
Run Code Online (Sandbox Code Playgroud)
为什么方法实现中的赋值不会将指针重新分配给新的NSError对象?
我发现将指针视为整数是有帮助的.(就是这样.)
用int来看你的例子.
-(BOOL)someMethodWithError:(int)error
{
error =100;
return NO;
}
Run Code Online (Sandbox Code Playgroud)
该整数是按值传递的.调用该函数后,错误不会改变.
error = 123;
[self someMethodWithError:error];
//error is = 123;
Run Code Online (Sandbox Code Playgroud)
指针是一回事.它是通过价值.
NSError * error; //this assigns this to a value in memory.
NSLog(@"%p",error);
[self someMethodWithError:error];
NSLog(@"%p",error); // the value of error will not have changed.
Run Code Online (Sandbox Code Playgroud)
如果您希望指针发生更改,则需要发送指向该指针的指针并进行更改.这让人很困惑,但要为自己绘制一张记忆图并考虑一下.:)
| 归档时间: |
|
| 查看次数: |
2736 次 |
| 最近记录: |