Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
播放Iphone音频时出现问题_Iphone_Objective C_Avaudioplayer - Fatal编程技术网

播放Iphone音频时出现问题

播放Iphone音频时出现问题,iphone,objective-c,avaudioplayer,Iphone,Objective C,Avaudioplayer,我只是想让一个简单的mp3播放器工作。我犯了一个我不太明白的错误 我在我的h文件中声明了一个AVAudioPlayer实例,并在我的.m文件中合成了它 Undefined symbols: ".objc_class_name_AVAudioPlayer", referenced from: literal-pointer@__OBJC@__cls_refs@AVAudioPlayer in PromoTabOptionHome.o ld: symbol(s) not found

我只是想让一个简单的mp3播放器工作。我犯了一个我不太明白的错误

我在我的h文件中声明了一个AVAudioPlayer实例,并在我的.m文件中合成了它

Undefined symbols:
  ".objc_class_name_AVAudioPlayer", referenced from:
      literal-pointer@__OBJC@__cls_refs@AVAudioPlayer in PromoTabOptionHome.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
我的h文件定义如下

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>


@interface PromoTabOptionHome : UIViewController {

    UIButton *playPause;
    AVAudioPlayer* audioPlayer;
    NSMutableString *audioPath;
    BOOL playing;

}

@property(nonatomic,retain)UIButton *playPause;
@property(nonatomic,retain)NSMutableString *audioPath;
@property(nonatomic,retain)AVAudioPlayer *audioPlayer;
-(id)initWithTabBar;
@end
#import "PromoTabOptionHome.h"
@implementation PromoTabOptionHome

@synthesize playPause;
@synthesize audioPath;
@synthesize audioPlayer;

-(id) initWithTabBar {
    if ([self init]) {
        self.tabBarItem.image = [UIImage imageNamed:@"home.png"];

        // set the long name shown in the navigation bar
        self.navigationItem.title=@"Nav Title";
    }
    return self;

}


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    playPause = [UIButton buttonWithType:UIButtonTypeCustom];
    playPause.frame = CGRectMake(-20,280, 100,100);
    [playPause setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
    [playPause addTarget:self action:@selector(buttonPushed:) 
          forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:playPause];

    playing=NO;

    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:audioPath, [[NSBundle mainBundle] resourcePath]]];

    NSError *error;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    //audioPlayer.numberOfLoops = -1;

    if (audioPlayer == nil)
        NSLog([error description]);
    else
        [audioPlayer play];
}

- (void) buttonPushed:(id)sender
{
    NSLog(@"It works!");

    switch (playing) {
        case NO:
            playing=YES;
              [playPause setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
            break;
        case YES:
            playing=NO;
              [playPause setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
            break;
        default:
            break;
    }
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}


@end

您是否将
AVFoundation
框架添加到您的项目中


通过右键单击Frameworks组并单击Add>Existing Framework来执行此操作,您可能会在项目中缺少对AVFoundation.Framework的引用。默认情况下,不会添加此引用。您需要手动添加
AVFoundation.framework

  • 在组和文件中展开项目
  • 右键单击将二进制文件链接到库
  • 选择添加
  • 选择现有框架-->弹出的现有框架列表
  • 选择AVFoundation.framework
  • 单击添加

  • 这将解决您的问题。它对我很有用。

    我试过了,但它在系统>库>框架中不存在。我想我正在寻找一个名为avfoundation.framework的东西,我在这里找到了它/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/System/Library/Frameworks/UIKit.framework奇怪的是,默认情况下x-code没有显示正确的位置?如果在顶部选择all,框架应该出现在下拉列表中。