2013-04-28 56 views
0

我正在做一個故事板教程(開始iOS Storyboarding),其中一個示例程序不能編譯。我以前遇到過這個問題,而對象類沒有被編譯器識別,但我找不到問題。在Xcode編譯/加載過程中未定義的符號

我錯過了什麼?

錯誤:i386硬件架構 未定義的符號: 「_OBJC_CLASS _ $ _ AudioPlayer」,從引用: objc級,裁判在MainViewController.o

MainViewController.m 
-------------------- 
#import "MainViewController.h" 

@interface MainViewController() 
{ 

} 
@end 

@implementation MainViewController 

@end 

MainViewController.h 
-------------------- 

#import "FlipsideViewController.h" 

#import "AudioPlayer.h" 
#import "PlayButton.h" 
#import "Scale.h" 

@interface MainViewController : UIViewController 
<FlipsideViewControllerDelegate, 
AudioPlayerDelegate, 
PlayButtonDelegate, 
UIPopoverControllerDelegate> 

@end 

AudioPlayer.m 
------------- 
#import "AudioPlayer.h" 
@interface AudioPlayer() { 

} 

...(snip)... 

@end 

@implementation AudioPlayer 

...(snip)... 
@end 

AudioPlayer.h 
------------- 

#import <Foundation/Foundation.h> 
#import <AVFoundation/AVFoundation.h> 
#import <AudioToolbox/AudioToolbox.h> 

...(snip)... 

@protocol AudioPlayerDelegate; 

@interface AudioPlayer : NSObject <AVAudioPlayerDelegate> { 

} 

...(snip)... 

@end 

@protocol AudioPlayerDelegate <NSObject> 
@required 
-(void)player:(AudioPlayer *)player stateChanged:(ePlayerState)state; 
@end 
+2

您是否添加#import 和AudioToolbox框架? – tkanzakic 2013-04-28 15:12:57

+1

可能'AudioPlayer.m'沒有爲您的目標編譯。在導航器上選擇文件,並確保在File Inspector的Target Membership部分中選擇了目標。 – murat 2013-04-28 15:25:55

+0

就是這樣 - 必須將所有類文件添加到編譯階段的編譯階段。 框架被妥善包括在內 - 我應該這麼說。 – Mickey 2013-04-28 15:28:46

回答

0

丟失的符號,因爲當你使用框架這不是自動添加到項目中的項目之一,您需要告訴編譯器將它們添加到要查看的位置列表中。

爲此,請打開左側面板(apple 1),然後選擇項目的活動目標。你正在尋找類似構建步驟的東西,而第四個則是鏈接框架。打開它並搜索你丟失的框架。一般來說,它與包含的第一部分名稱相同,因此它可能是AudioToolbox.framework。

0

Murat的評論解決了這個問題。但是在Xcode中,不會自動添加.m文件,以便在複製它們時進行編譯並且不要修改它們。

可能AudioPlayer.m沒有編譯爲您的目標。在導航器上選擇文件,並確保在File Inspector的Target Membership部分中選擇了目標。 - murat 4月28日15:25

相關問題