2014-11-03 66 views
0

我刚开始iOS编程,正在尝试编译一个简单的代码,但无法这样做。我收到错误消息,苹果Mach-O链接器错误,架构x86_64的未定义符号

Undefined symbols for architecture x86_64: 
"_OBJC_CLASS_$_Player", referenced from: 
    objc-class-ref in AppDelegate.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

现在,我发现因为我对代码和我太正面临同样的问题,即使用同样的环境下2个类似的问题(herehere)。我已经尝试过他们的解决方案,但没有成功。

正如我刚开始iOS时,我使用这tutorial作为指导,并试图运行他们的代码。错误发生在我为玩家变量赋予一些值的部分。代码如下。

#import "AppDelegate.h" 
#import "Player.h" 
#import "PlayersViewController.h" 

@interface AppDelegate() 

@end 

@implementation AppDelegate{ 
    NSMutableArray *_players; 
} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary  *)launchOptions { 
    // Override point for customization after application launch. 
    _players = [NSMutableArray arrayWithCapacity:20]; 

    Player *player = [[Player alloc] init]; 
    player.name = @"Bill Evans"; //error will occur here 

    return YES; 
} 

我的架构设置如下, ArchitectureSettings

的Player.h和PlayersViewController.h的代码是完全与那些从本教程一样。

更新

Player.h

@interface Player : NSObject 

@property (nonatomic, copy) NSString *name; 
@property (nonatomic, copy) NSString *game; 
@property (nonatomic, assign) int rating; 

@end 

PlayersViewController.h

#import <UIKit/UIKit.h> 

@interface PlayersViewController : UITableViewController 

@property (nonatomic, strong) NSMutableArray *players; 

@end 

我的构建结果 BuildResults

+2

听起来像你没有将包含'Player'类的源文件添加到Xcode目标。检查构建日志,看看它是否正在编译。 – trojanfoe 2014-11-03 09:53:59

+0

这是否意味着还需要包含播放器的.m文件?我按照教程,他们提到的所有.h文件。我将用.h文件的内容更新我的问题。 – winhung 2014-11-04 00:54:44

+0

因此,尽管看起来很尴尬,但确实看起来我需要包含一个.m文件,并为使用'@property'语法声明的变量指定'@sntnthesize'语法。 – winhung 2014-11-04 01:56:37

回答

1

随着Player.h文件,我必须也包含.m文件。 代码为.m文件如下所示,

#import <Foundation/Foundation.h> 
#import "Player.h" 

@implementation Player 

@synthesize name = _name; 
@synthesize game = _game; 

@end 

它管理建,但运行时出现错误。但是,这是另一个问题。

相关问题