2012-01-03 101 views
0

我已经从过去的1年,但第一次我碰到一个怪异的选择参数来编码应用,在Objective - C语言

- (NSString *)dictionaryForString:(NSDictionary *)dictionary error:(NSError **)error 

需要正如你可以看到(NSDictionary *)句法的理解是一个星号和(NSError **)有两个,那么有一个或两个星号有什么区别?

由于

回答

4

该方法通过参照返回错误,即,传递给它的指针的地址到NSError和它(任选地)设置指针值。

NSError *error = nil; 
NSString *result = [obj dictionaryForString: dict error: &error]; 
if (!result) 
    NSLog(@"%@", error); 

这是一种常见的C实践。

+0

没错了吧!谢谢 – doNotCheckMyBlog 2012-01-03 06:13:21

2

的NSDictionary *意味着它是一个的NSDictionary对象的起始地址在内存 NSError **意味着它指向起始内存地址为NSError对象

+0

现在它是有道理的! :) 谢谢 – doNotCheckMyBlog 2012-01-03 06:13:13