【问题标题】:clang: error: linker command failed with exit code 1 (use -v to see invocation)3clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)3
【发布时间】:2015-11-25 00:09:47
【问题描述】:

每当我制作新项目时,我都会收到以下错误。 将 Enable Bit Code 更改为 No 时会出现错误。

但是一旦我设计了我的主故事板,即向主故事板添加表格视图控制器和导航控制器,上面的错误又来了。

我正在发布错误的屏幕截图和我的构建设置。

【问题讨论】:

  • 它说您在HomeTableViewControllerStoreDetailTableViewController 中有一个名为storedObject 的重复符号。您能告诉我们这两个视图控制器中的storedObject 定义是什么吗?
  • 我的 storeObject 是静态的,现在我在每个文件中为这些对象赋予不同的名称

标签: objective-c xcode7


【解决方案1】:

我发现this Apple Support thread 可能会有所帮助,答案如下:

我猜这是因为你有重复的符号。大概是 在头文件中定义的东西应该在源文件中

所以这里有几件事可能会导致问题:

  • 您正在导入.m 文件,仅导入.h 文件
  • 如果您在头文件中有@implementation,则它们只会出现在实现文件中。
  • 您可能有一个包含两次的.m 文件。只留下一个文件参考。

您将能够在构建阶段看到它们,参见图片

  • .h文件中@Interface上方可能有声明,放入@Interface
  • 在同名的不同.h 文件中声明常量或变量。
  • 将“No Common Blocks”从 Yes 更改为 No 可能会有所帮助(在 Targets->Build Settings->Apple LLVM - Code Generation 下)

  • 当您在具有不同实现的不同文件中具有相同的@interface 时,也会发生这种情况。例如,您有一个 Player 类,在 Player.h/m 文件中,并且您有一个 Match 类 (Match.h/m),并且匹配是在两个玩家之间进行,而不是前面提到的 Player。

播放器.h

@interface Player : NSObject
@property (nonatomic) NSUInteger _id;
@property (nonatomic, strong) NSString* firstName;
@property (nonatomic, strong) NSString* lastName;
@property (nonatomic, strong) NSString* username;
@end

匹配.h

@class Player

@interface Match : NSObject
@property (nonatomic, strong) Player* player1;
@property (nonatomic, strong) Player* player2;
@property (nonatomic) NSUInteger matchId;
@end

@interface Player : NSObject
@property (nonatomic, strong) NSString* nickName;
@property (nonatomic, strong) NSString* point;
@property (nonatomic, strong) NSNumber* lastMove;
@end

在这种情况下,编译器会看到两个不同的 Player 类实现。您需要将 Match.h 文件中的 Player 类重构为 MatchPlayer。

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2016-04-15
    • 2013-05-15
    • 2016-02-25
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多