2010-11-17 98 views
0

我玩的是电影的MPMoviePlayerController。后来,应用程序“重新启动”(意思是一个伪重置,其中所有viewController被删除,用户返回到主屏幕),并再次播放相同的电影。[AVPlaybackItem fpItem]:消息发送到释放实例

这会导致iPad上的iOS中3.2.2崩溃:

[AVPlaybackItem fpItem]:消息发送给 释放实例

我不知道在哪里是从何而来。似乎是私人的东西。有没有人经历过并可能解决同样的问题?

该特定地址的堆栈跟踪:

(gdb) info malloc 0x11471400 
Alloc: Block address: 0x11471400 length: 76 
Stack - pthread: 0xa0630500 number of frames: 34 
    0: 0x9534e0c3 in malloc_zone_calloc 
    1: 0x9534e01a in calloc 
    2: 0x343edc9 in _internal_class_createInstanceFromZone 
    3: 0x344b5c9 in _class_createInstanceFromZone 
    4: 0x344b5ef in class_createInstance 
    5: 0x3326b57 in +[NSObject allocWithZone:] 
    6: 0x332583a in +[NSObject alloc] 
    7: 0x536ab67 in -[AVPlaybackQueue queueItemWasAddedNotification:] 
    8: 0x27f586 in _nsnote_callback 
    9: 0x328d165 in _CFXNotificationPostNotification 
    10: 0x2762ca in -[NSNotificationCenter postNotificationName:object:userInfo:] 
    11: 0x5354982 in -[AVQueue itemWasAdded:atIndex:] 
    12: 0x5354801 in -[AVQueue insertItem:atIndex:error:] 
    13: 0x53549d8 in -[AVQueue appendItem:error:] 
    14: 0x535c3be in -[AVController addNextFeederItemToQueue] 
    15: 0x535b06f in -[AVController checkQueueSpace] 
    16: 0x5359f46 in -[AVController setQueue:] 
    17: 0x535ac62 in -[AVController setQueueFeeder:withIndex:] 
    18: 0x30eee20 in -[MPAVController reloadFeederWithStartIndex:] 
    19: 0x30deed7 in -[MPMoviePlayerControllerNew _prepareToPlayWithStartIndex:] 
    20: 0x30dc686 in -[MPMoviePlayerControllerNew prepareToPlay] 
    21: 0x27f586 in _nsnote_callback 
    22: 0x328d165 in _CFXNotificationPostNotification 
    23: 0x2762ca in -[NSNotificationCenter postNotificationName:object:userInfo:] 
    24: 0x281238 in -[NSNotificationCenter postNotificationName:object:] 
    25: 0x31596d1 in -[MPMovie _determineMediaType] 
    26: 0x291b87 in __NSFireDelayedPerform 
    27: 0x32747dc in CFRunLoopRunSpecific 
    28: 0x32738a8 in CFRunLoopRunInMode 
    29: 0x3aaf89d in GSEventRunModal 
    30: 0x3aaf962 in GSEventRun 
    31: 0x52b372 in UIApplicationMain 
    32: 0x27be in main at /blablabla 
    33: 0x2735 in start 

回答

1

这听起来像你打电话release超过您所呼叫retain

是否错误消息不包含在最后一个十六进制地址?如果是这样,请按照下列步骤追捕违规对象:

  1. 导航到项目 - >编辑活动的可执行(或按下Command-Option键-X)。选择参数选项卡。设置环境变量,如下图所示: alt text

  2. 运行程序,重复重现错误所需的步骤。

  3. 复制在错误的结束十六进制地址。然后,在调试器控制台中输入以下命令:(gdb) info malloc-history <paste-address-here>
  4. 检查输出追捕违规对象。

P.S.完成后不要忘记禁用环境变量。

+0

我真的不认为这是我的问题编号。 AVPlaybackItem甚至不是我可以实例化的东西。 MPMoviePlayerController在UIViewController中实例化。该viewController在某个地方被释放。然后创建一个UIViewController的新实例。只有这样,错误才会发生。我认为一些负责处理播放队列的私有API会导致问题。我添加堆栈跟踪到我的问题,也许有人可以拉出他们的水晶球,并帮助... – 2010-11-17 19:47:59

+0

嗨约瑟夫图拉,请张贴您解决上述问题的方式。 – Hanuman 2011-04-27 11:52:36

1

也许你打电话准备玩一次以上的同一部电影,我认为这是问题,它之前的4.3存在于所有iOS我猜(不知道虽然)所以刚旗的电影,如果准备发挥得叫一次,然后不记得它在同一个文件

相关问题