【问题标题】:Objective c: unrecognized selector sent to instance目标 c:发送到实例的无法识别的选择器
【发布时间】:2011-02-07 16:05:57
【问题描述】:

我知道这种问题反复出现,但我找不到任何答案来解决我的问题:(。

我正在开发一个应用程序,我需要获取音频流。我决定使用 MPMoviePlayer,所以我这样做了:

#import "MediaPlayer/MediaPlayer.h"    
@interface FirstViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
    ...     
    IBOutlet MPMoviePlayerViewController *theMovie;
    ...
}

...
@property (nonatomic, retain) MPMoviePlayerViewController *theMovie;

在实现中,我只是 @synthesize-d 它。

现在,每当我分配它并尝试访问它的成员或方法时,我都会在初始化后的第一行收到这个该死的错误unrecognized selector sent to instance

self.theMovie = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:@"http://netvarp.kringvarp.fo:554/radio/16/playlist.m3u8"]];
self.theMovie.moviePlayer.controlStyle = MPMovieControlStyleNone;       
    ...

(这是在 viewDidLoad 方法中)。

我在这一行得到错误:

self.theMovie.moviePlayer.controlStyle = MPMovieControlStyleNone;

或初始化后我调用的任何内容。

如果我删除 IBOutlet,如果我在没有“self”的情况下调用它,如果声明一个 MPMoviePlayerController,也是如此。我无法弄清楚我在两天内做错了什么!好尴尬:(

任何帮助将不胜感激。

我忘了提,目标操作系统 > 3.0。在模拟器上一切正常,但在设备上(iPhone 2G 和 iPhone 3G,都带有 IOS 3.1.3)

【问题讨论】:

  • 我不是专家,但我猜 URL 已损坏,或者内容不适用于 MPMoviePlayer。此外,我尝试使用 iTunes 和 VLC 手动打开它,但也没有任何反应。
  • 你为什么要使用插座到电影播放器​​视图控制器?
  • 哪个选择器被调用但未被识别?是 -theMovie、-moviePlayer 还是 -setControlStyle?您能否提供更多代码?这些代码行实际上是在 FirstViewController 中的方法中调用的吗?

标签: iphone objective-c xcode instance unrecognized-selector


【解决方案1】:

您需要发布崩溃输出。 unrecognized selector 表示你正在尝试调用不存在的东西,例如:

[self doSomethingSpecial];

如果您的控制器中不存在doSomethingSpecial,您将收到发送到实例的无法识别的选择器

【讨论】:

    【解决方案2】:

    正如 Apple 文档所说: controlStyle 仅适用于 iOS 3.2 及更高版本。

    我认为这可能是您的问题,因为此方法在您的 3.1.3 设备上不可用,但它在模拟器上,我猜是 (4.2.1)。

    【讨论】:

    • 你是对的。我一直在调用版本 3.1.3 中未实现的方法。我已经清除了所有这些方法,并且一切正常。谢谢你,也感谢 WrightsCS 在下面的帮助;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2012-07-24
    相关资源
    最近更新 更多