我对Objective C很新,但事情进展顺利。但是,我想我错过了一个关于如何创建和发送对象的关键概念。我希望有人可以帮助我。
我正在创建一个只需创建MPMusicPlayer的iPhone应用程序,并开始播放来自该曲目的歌曲。
我在AppDelegate中创建了音乐播放器(myPlayer),就像这样......
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// Add the main view controller's view to the window and display.
[window addSubview:mainViewController.view];
[window makeKeyAndVisible];
// instantiate a music player
MPMusicPlayerController *myPlayer =
[MPMusicPlayerController applicationMusicPlayer];
// assign a playback queue containing all media items on the device
[myPlayer setQueueWithQuery: [MPMediaQuery songsQuery]];
// start playing from the beginning of the queue
[myPlayer play];
return YES;
}
这很好用。现在在MainViewController中,我尝试向myPlayer发送命令以跳到下一首曲目
[myPlayer skipToNextItem];
然而,当我尝试编译时,我收到myPlayer未声明的消息。
我做错了什么?我可以看到我如何以程序方式解决这个问题(通过在MainViewController中创建播放器),但我想了解我必须做些什么才能让它以OOP方式工作。
干杯,
理查德
答案 0 :(得分:1)
最可能的是,您的ViewController不知道mPlayer对象。您有两种选择:
在你的appdelegates声明中,执行:
@property(nonatomic, retain) MPMusicPlayerController *mPlayer;
在你的appdelegates实现中,执行:
@synthesize mPlayer;
在你的viewcontroller中,执行:
MPMusicPlayerController *mPlayer = [[[UIApplication sharedApplication] delegate] mPlayer];