架构i386的未定义符号:“_ OBJC_IVAR _ $ _ UIViewController._view”,引自:

时间:2013-04-30 09:51:35

标签: iphone ios objective-c xcode xcode4

我一直在查看有关此错误的无数帖子:

Undefined symbols for architecture i386:
  "_OBJC_IVAR_$_UIViewController._view", referenced from:
      -[ViewController viewDidLoad] in ViewController.o

ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我已经检查过.m文件并链接库和复制包文件。我使用的是xcode 4.6.2版本。我想在ViewDidLoad中以编程方式创建Button。

3 个答案:

答案 0 :(得分:12)

确切原因存在不确定性,但可能有很多原因导致此错误:

  1. 按钮未实例化(已分配和初始化),即按钮为零。

  2. 如果您已全局制作按钮,请使用自我

  3. 进行访问

    前:

    myButton = [[UIButton alloc] init];// Don't use like this
    self.myButton = [[UIButton alloc] init];// Use like this
    

    编辑: 用这个替换你的代码

    self.button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    self.button.frame = CGRectMake(10, 220, 150, 30);
    [self.button setTitle:@"Show" forState:UIControlStateNormal];
    [self.button addTarget:self action:@selector(aMethod:) forControlEvents:UIControlEventTouchDown];
    [_view addSubview:self.button]; // Note if you have set property of _view then use it as self.view because it also may be the cause of error.
    

    希望它对你有所帮助。

答案 1 :(得分:3)

您是否使用_view表示法引用self.view?这可能是问题所在。尝试切换_view for self.view

答案 2 :(得分:0)

您确定使用的是

吗?
_viewYour.doSomething

_view.doSomething

我刚才犯了这个错误。