【问题标题】:Expected specifier-list before "MainViewController / Method -x not found return type defaults to id“MainViewController / Method -x not found 返回类型默认为 id 之前的预期说明符列表
【发布时间】:2011-08-08 05:14:39
【问题描述】:

我的 EquivalenceClassGroup 中有以下导入

#import "MainViewController.h"

然后在我的 EquivalanceClassGroup.h 中的属性中:

@property (nonatomic, assign) MainViewController *myController;

我收到此错误:“编译时 MainViewController 之前的预期说明符列表

如果我将导入更改为:@class MainViewController 并注释掉 MainViewController.h 的导入,该错误就会消失,但是 XCode 无法在我的 MainViewController 来自 EquivalenceClassGroup.m 所以来自这里:

-(id)initWithLetterNumbers: (int)numOfLettersInWord enteredLetter: (NSString *) str  controller:(UIViewController *)controller {
    myController = (MainViewController *) controller;
    letterArray = [myController getLetterArray];
    [myController getLetterArray];

我在最后一行得到:“方法 -getLetterArray 未找到返回类型默认为 id”

我在 MainViewController 中定义了这个方法:-(NSArray*)getLetterArray; 并且该接口文件或 m 文件中没有错误。在等效类中,如果我输入 [myController then space,我似乎找不到任何方法。

MainViewController 类中,我确实导入了 EquivalenceClassGroup 并使用这些方法没有任何问题

【问题讨论】:

  • 您在哪个文件中编写#import "MainViewController.h"

标签: iphone objective-c


【解决方案1】:

您必须确保在 .m 文件中导入 MainViewController.h 文件。 @class 所做的只是告诉接口有这样一个类,但它没有告诉它任何关于该类的信息。这就是#import 本质上所做的。 .h 文件中的 @class 只是很好的编程习惯,可确保您加倍导入或任何其他操作。希望对您有所帮助!

【讨论】:

    【解决方案2】:

    我认为您必须在 EquivalanceClassGroup.h 文件中编写 #import "MainViewController.h" 并且 @class MainViewController 在 MainViewController.h 文件中。

    【讨论】:

      【解决方案3】:
      @class MainViewController
      

      在您的 EquivalenceClassGroup.h 中

      #import "MainViewController.h" 
      

      在 EquivalenceClassGroup.m 中

      这称为“前向声明”并且很常见。

      【讨论】:

      • 我错过了第二节课的导入。谢谢
      猜你喜欢
      • 1970-01-01
      • 2011-07-02
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      相关资源
      最近更新 更多