【问题标题】:IOS duplicate interface definitionIOS重复接口定义
【发布时间】:2012-07-18 11:27:08
【问题描述】:

您好,我的 .h 文件中有以下代码

import <UIKit/UIKit.h>


@interface NSFont : NSObject <NSCoding> {

}

@end


@interface NSParagraphStyle : NSObject <NSCoding> {

}

@end

我得到了那个错误:

错误:类“NSParagraphStyle”的接口定义重复

我没有包含某些用户指出的重复项

main.m 导入

#import <UIKit/UIKit.h>

推荐

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
#endif

【问题讨论】:

  • 这两个类都是在 AppKit 框架中定义的(所以如果你正在为 iOS 开发它应该不是问题 - 除了 NS 前缀类是一个非常糟糕的主意) .你确定你在做一个 iOS 项目吗?
  • 是的,它在以前的 xcode 上运行良好
  • 是否可以发布您的main.mprefix.pch 文件的导入?
  • 用与 Apple 相同的命名空间来命名你的类是个坏主意。

标签: objective-c ios interface


【解决方案1】:

NSParagraphStyle 已添加到最新(未发布)的 iOS 版本中。所以你不需要自己定义它。您可能需要更改名称,在这种情况下不要使用 NS 作为前缀。

【讨论】:

    【解决方案2】:

    NSParagraphStyle 已经存在 (see here)。

    你为什么要使用 NS 命名空间 - 如果你想创建自己的类,创建你自己的命名空间并在你的类名前面加上它(即MHParagraphStyle),这样你的段落样式类就不会与内置:)

    【讨论】:

    • 这就是为什么我也对此发表评论。问题是该类是在AppKit 框架中定义的,而不是在UIKit 中定义的(所以从技术上讲应该没问题)
    • 不要使用与 Apple 相同的命名空间来命名您的类。如果 Apple 碰巧将类移植到 UIKit,那将是一场灾难。突然应用程序将不再编译...
    • @futureelite7 - 这正是这里发生的事情:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2012-03-18
    • 2012-05-30
    • 2014-02-09
    • 1970-01-01
    相关资源
    最近更新 更多