相关疑难解决方法(0)

编译到iOS设备时出现"可变未声明"错误,但不适用于模拟器

我有一个自定义的UIVIewController,它是其他控制器的基类,并且有一个自定义UIView变量的实例,可以通过继承这些类来访问它.

BaseViewController.h

@interface BaseViewController : UIViewController {
    UIView *_vwHeader;
}

@end
Run Code Online (Sandbox Code Playgroud)

BaseViewController.m

#import "BaseViewController.h"
@implementation BaseViewController

-(void)loadView {

    [super loadView];

    _vwHeader = [[UIView alloc] init];
}

@end
Run Code Online (Sandbox Code Playgroud)

CustomViewController.h

#import "BaseViewController.h"
@interface CustomViewController : BaseViewController

@end
Run Code Online (Sandbox Code Playgroud)

CustomViewController.m

#import "CustomViewController.h"
@implementation CustomViewController

- (void)loadView
{
    [super loadView];

    [_vwHeader setHidden:NO];
}

@end
Run Code Online (Sandbox Code Playgroud)

问题是,当我在模拟器上运行时,一切都运行得很好,但是当我换到设备时,我[_vwHeader setHidden:NO];在行上有一个错误,上面写着:'_vwHeader' undeclared (first use in this function)

我已经尝试过:

  • 注释这行代码,但是它在另一个类中使用基类中的变量以相同的方式给出了一个错误(它一次只返回一个错误),所以看起来它不是视图中的特定错误或者控制器类,因为错误发生在具有不同类型的其他类型中,例如UIViewNSObject类型
  • 更改目标编译器配置,例如:架构(所有这些),基本sdk(都高于4.0)没有改变任何东西

什么似乎解决了这个问题,但并不完全

  • _vwHeader通过self._vwHeadersuper._vwHeader似乎工作创建属性并访问它,但是必须创建一个属性才能访问变量并不能让我感到舒适,特别是因为我必须为我项目中相同情况下的所有变量执行此操作.
  • 更改了C/C++编译器版本:使用Apple LLVM Compiler 2.1会使编译错误消失,但是在项目中使用的其他库会产生一些其他问题.因此,它不是一个明确的解决方案,但可能是问题所在的线索. …

iphone compiler-errors objective-c ios xcode4

11
推荐指数
1
解决办法
2773
查看次数

标签 统计

compiler-errors ×1

ios ×1

iphone ×1

objective-c ×1

xcode4 ×1