Ошибка [IRForTarget]: не удалось найти косвенный символ ivar Objective-C при добавлении наложений в MKMapView.

Я получил эту ошибку, когда пытаюсь добавить наложения на карту, из одного из ответов SO Как предотвратить ошибку _OBJC_IVAR_$_UIPickerView._backgroundView symbol not found? Я понял, что мы не должны использовать приватный ivar, но я не использовал ни один из них в моем код, но я получил следующую ошибку.

Ошибка [IRForTarget]: не удалось найти косвенный символ ivar Objective-C OBJC_IVAR_$_MKPolygon._interiorPolygons

Пожалуйста, покажите мне, как решить эту проблему


person smily    schedule 23.11.2012    source источник
comment
stackoverflow .com/questions/9983192/   -  person Kreiri    schedule 23.11.2012
comment
Я вношу изменения в свой код, как указано в приведенной выше ссылке, но бесполезно.   -  person smily    schedule 23.11.2012


Ответы (1)


Начиная с XCode 4.5, 3 оператора объявления переменных можно свернуть в 1.

  1. iVar
  2. Недвижимость
  3. Синтез

Теперь: 1. Синтезировать

Итак, если старый код был:

NSString* name; //in .h file
@property (nonatomic, strong) NSString* name; // in .h file
@synthesize name; // in .m file

Поскольку 4.5 это все, что нужно, это:

@property (nonatomic, strong) NSString* name; // in .h file

Теперь мы можем обратиться к этому iVar одним из следующих способов:

self.name = @"john"; // used to reference the full property setter/getting - usually from outside the object
_name = @"john"; // used to reference an internal variable

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

name = @"john";

Чтобы исправить изменение либо:

   self.name = @"john"; // or
    _name = @"john"; 

Примечание. Я не получил эту ошибку в версии xcode 4.5 (4G182), но я получил ее в 4.5.2 (4G2008a).

person John Goodstadt    schedule 20.12.2012