2012-01-03 55 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