Приведем следующий пример:
- (BOOL) doSomething: (NSError**) pError
{
*pError = [NSError ....];
}
Анализатор вернет следующую ошибку:
Потенциальное нулевое разыменование. В соответствии со стандартами кодирования в разделе «Создание и возврат объектов NSError» параметр может иметь значение null.
На что было бы предложение изменить это на:
- (BOOL) doSomething: (NSError**) pError
{
if(pError)
{
*pError = [NSError ....];
}
}
Но я бы предпочел добавить ненулевой атрибут к параметру ошибки, чтобы препятствовать использованию передачи нулевого значения. Я не могу понять, как правильно привести аргументы. Может ли двойной указатель иметь ненулевой атрибут?