АВТОМАТИЧЕСКОЕ СПРАВОЧНОЕ СЧЕТА: Указатель на неконфессиональный тип 'nserror *' без явного права собственности

StackOverflow https://stackoverflow.com/questions/7804435

Вопрос

Обновляя некоторые из моего кода, который будет совместим с SDK iOS 5, я попытался реорганизовать свой код, используя «преобразовать в Arc Objective-C» в XCode и получил ошибку. Ошибка возникает в переменной экземпляра в моем файле .h.

NSError **_error;

Ошибка гласит «указатель на неконфессиональный тип« nserror *»без явного владения». Как я могу это исправить?

Это было полезно?

Решение

При хранении NSError Объекты в переменной экземпляра вы должны объявить ее как простой указатель:

@interface Foo : NSObject
{
    NSError *_errror;
}

NSError ** используется только для косвенного возврата NSError Объекты из метода к вызывающему. Это (вероятно) ошибка - хранить его в переменной экземпляра.

Другие советы

Вы можете использовать один из пожизненных квалификаций, описанных в Переход к примечаниям по выпуску дуги

Для безразличения ** вы бы использовали __autoreLeasing, поэтому пример, приведенный Nikolai

@interface Foo : NSObject
{
    NSError * __autoreleasing *error;
}

Синтаксис немного странно, и вы должны следовать советам Nikolais, но если вы уверены, что nserror ** - это то, что вы хотите, это должно работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top