【问题标题】:Objective C - No previous prototype for functionObjective C - 没有以前的函数原型
【发布时间】:2011-11-20 16:25:03
【问题描述】:

我有 2 种方法给我一个警告:

id LoadObjectFromFile(NSString* filename) {
    if ((filename = DocumentPath(filename, NO))) {
        return [NSKeyedUnarchiver unarchiveObjectWithFile: filename];
    } else {
        return nil;
    }
}

BOOL saveObjectWithFile(NSString* filename, id object) {
    if ((filename = DocumentPath(filename, YES))) {
        return [NSKeyedArchiver archiveRootObject: object toFile: filename];
    } else {
        return NO;
    }
}

这给了我“没有以前的函数原型”警告。

我宁愿不只是禁用 xcode 中的警告。

我哪里错了?

【问题讨论】:

  • 您是在尝试编写函数还是方法?这些是objective-c中不同的东西
  • 那个警告非常没用。我总是把它关掉。
  • @WTP:这不是没用的。在声明之前使用函数会使您面临隐式类型不匹配的风险。例如,声明之前的任何使用都会假定它返回int,因此如果函数返回float,您将得到一个垃圾结果(因为真正的返回值在不同的位置)。这就是为什么您必须在使用函数之前声明它们的原因,警告会提醒您。
  • 即使我在 .h 上声明了方法,它也会对 .m 文件中的定义发出警告。

标签: objective-c cocoa warnings function-prototypes


【解决方案1】:

这是 C 函数而不是目标 C 方法。你在 .h 文件中定义了吗?

【讨论】:

  • 别担心这种错误是最难发现的;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多