Синтаксическое понимание необходимо в языке Objective -C - PullRequest
0 голосов
/ 03 января 2012

Я кодирую приложение с прошлого года, однако впервые я наткнулся на странно выглядящий аргумент селектора,

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

Как видите, (NSDictionary *) с одной звездочкой и (NSError **) с двумя, так в чем же разница между одной или двумя звездочками?

Спасибо

Ответы [ 2 ]

4 голосов
/ 03 января 2012

Этот метод возвращает ошибку по ссылке , то есть вы передаете ему адрес указателя на NSError и он (необязательно) устанавливает значение указателя.

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

Это обычная практика Си.

2 голосов
/ 03 января 2012

NSDictionary * означает, что это начальный адрес объекта NSDictionary в памяти. NSError ** означает, что он указывает на начальный адрес памяти для объекта NSError

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...