0

我正在做一个故事板教程(开始 iOS 故事板),其中一个示例程序无法编译。我之前遇到过这个问题,编译器无法识别对象类,但我找不到问题。

我错过了什么?

错误:体系结构 i386 的未定义符号:“_OBJC_CLASS_$_AudioPlayer”,引用自:MainViewController.o 中的 objc-class-ref

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
4

2 回答 2

0

缺少符号是因为当您使用的框架不是自动添加到项目中的框架之一时,您需要告诉编译器将它们添加到要查看的位置列表中。

为此,请打开左侧面板(苹果 1),然后选择项目的活动目标。您正在寻找诸如构建步骤之类的东西,而第四个将是链接框架。打开它并搜索您缺少的框架。一般和include的第一部分同名,所以大概是AudioToolbox.framework。

于 2013-04-28T15:26:14.063 回答
0

Murat 的评论解决了这个问题。但是在 Xcode 中,当您复制它们并且不要修改它们时,它们不会自动添加要编译的 .m 文件。

可能 AudioPlayer.m 没有为您的目标编译。在 Navigator 上选择文件,并确保在 File Inspector 的 Target Membership 部分中选择了您的目标。– 穆拉特 4 月 28 日 15:25

于 2013-05-14T15:02:36.883 回答