错误[IRForTarget]:在向MKMapView添加叠加层时找不到Objective-C间接ivar符号

时间:2012-11-23 06:38:02

标签: objective-c mkmapview mkoverlay ivar

当我尝试添加叠加层来映射时出现此错误,来自其中一个SO答案How to prevent from "_OBJC_IVAR_$_UIPickerView._backgroundView symbol not found" error?我明白我们不应该使用私有ivar,但我没有在我的任何地方使用它们代码,我仍然收到以下错误。

错误[IRForTarget]:找不到Objective-C间接ivar符号OBJC_IVAR _ $ _ MKPolygon._interiorPolygons

请告诉我解决此问题的方法

1 个答案:

答案 0 :(得分:0)

从XCode 4.5开始,3个变量声明语句可以折叠为1

  1. 一个iVar
  2. A Property
  3. A Synthesize
  4. 现在: 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)上收到了此错误。