第一次获取我的@selector后如何获取非null的userInfo(方法)

蒂莫西·杰夫考特(Timothy Jeffcoat)

我有类似以下的代码:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemPlayEnded:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];

[[NSNotificationCenter defaultCenter] postNotificationName:AVPlayerItemDidPlayToEndTimeNotification object:nil userInfo:userInfo];

在选择器方法中:

- (void)itemPlayEnded:(NSNotification *)notification
{
    NSLog(@"Entered itemPlayEnded");

    AVPlayerItem *p = [notification object];
    NSLog(@"userinfo description %@",[[notification userInfo] description]);
}

第一次itemPlayEnded访问的userInfonull第一次之后的值为null

谁能告诉我为什么会这样吗?为什么在第一次之后就null物有所值userInfo

编辑:

我需要澄清正在发生的事情。我还更新了通知代码,以使用lastItem,它是AVPlayerItem。

queuePlayer = [[AVQueuePlayer alloc] init];
NSDictionary *userInfo = @{@"tones": copyoftones};

for (NSString *playThis in listOfTonesToBePlayed) {
    NSString *soundPath =[[NSBundle mainBundle] pathForResource:playThis ofType:@"mp3"];
    NSURL *soundURL = [NSURL fileURLWithPath:soundPath];
    AVPlayerItem *thePlayerItemA = [[AVPlayerItem alloc] initWithURL:soundURL];
    lastItem = thePlayerItemA;
    [queuePlayer insertItem:thePlayerItemA afterItem:nil];
}
queuePlayer.actionAtItemEnd = AVPlayerActionAtItemEndAdvance;


[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemPlayEnded:) name:AVPlayerItemDidPlayToEndTimeNotification object:lastItem];

[[NSNotificationCenter defaultCenter] postNotificationName:AVPlayerItemDidPlayToEndTimeNotification object:lastItem userInfo:userInfo];

[queuePlayer play];

怎么了。

  1. 在queuePlayer能够播放音调之前,请输入itemPlayEnded以及Dictionary non nil
  2. 接下来播放音调列表
  3. 使用字典nil重新输入itemPlayEnded。

我想使用代码来重置itemPlayEnded方法内部的Notification,类似于以下内容(p是AVPlayerItem,这是带有Notification的代码中的lastItem):

[[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:p];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemPlayEnded:) name:AVPlayerItemDidPlayToEndTimeNotification object:p];        
[[NSNotificationCenter defaultCenter] postNotificationName:AVPlayerItemDidPlayToEndTimeNotification object:p userInfo:userInfo];

[queuePlayer play];

但是随后,itemPlayEnded方法将在不播放播放器的情况下以无休止的循环重新输入。比赛条件。

有什么建议?

编辑2:我确定有问题的代码是:

[[NSNotificationCenter defaultCenter] postNotificationName:AVPlayerItemDidPlayToEndTimeNotification object:lastItem userInfo:userInfo];

我需要如何设置对象以使用正确的发送者。尚不确定放在哪里。

编辑3:

我真正想做的是能够遍历声音或mp3的完整序列。我终于发现,我在这里尝试做的事情并没有像我想要的那样工作。因此,我最终使用了https://github.com/dgiovann/AVQueuePlayerPrevious中的类,这对我来说非常有用!

深红克里斯

您正在预订AVPlayerItemDidPlayToEndTimeNotification,该AVPlayerItemDidPlayToEndTimeNotification首先由您自己发布(带有一些用户信息),然后再次发布,这次不是您自己发布,因此可能包含或可能不包含任何用户信息。请参阅文档,以查看Apple何时以及为何发布此通知,以及可以从中获得哪些信息。

https://developer.apple.com/library/mac/documentation/AVFoundation/Reference/AVPlayerItem_Class/Reference/Reference.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在第一次匹配后使用grep(或类似方法)获取字符串

来自分类Dev

第一次换行后如何获取所有单词?

来自分类Dev

第一次如何获取正确的div innerHeight?

来自分类Dev

第一次出现子串后获取所有内容

来自分类Dev

获取给定日期后特定日期的第一次出现

来自分类Dev

获取第一次出现的行

来自分类Dev

获取值的第一次出现

来自分类Dev

获取第一次命中的 url [webscraping python]

来自分类Dev

第一次点击后如何禁用按钮?

来自分类Dev

第一次单击时,如何在edittext上获取TimePickerDialog

来自分类Dev

如何获取DIV中的第一次出现的文本

来自分类Dev

第一次获得条件时如何从条件中获取值?

来自分类Dev

如何在android上的Fragment中第一次获取数据

来自分类Dev

如何从句子中的arraylist中获取任何单词第一次出现的索引

来自分类Dev

在Spring MVC中完成第一次交易后如何调用方法

来自分类Dev

在Spring MVC中完成第一次交易后如何调用方法

来自分类Dev

使用Python datetime获取每天的第一次和最后一次时间

来自分类Dev

为什么我没有在第一次调用我的 REST API 时获取数据

来自分类Dev

我正在尝试查询以获取活动,但不包括注册日(第一次出现特定 ID)

来自分类Dev

如何基于另一个值的第一次迭代获取Excel值?

来自分类Dev

在 FormFlow Bot Framework 中第一次错误尝试后,我如何验证并提供选项列表

来自分类Dev

在Maya 2015中,如何获取python重新加载此模块?构造函数仅在第一次运行

来自分类Dev

第一次在棉花糖中启动应用程序时如何获取位置信息

来自分类Dev

反应-redux。如何在第一次应用程序渲染时获取更新的商店状态

来自分类Dev

如何在第一次加载时获取父组件中子组件状态值的总和?

来自分类Dev

为什么我的客户端套接字在第一次发送后就死了?

来自分类Dev

为什么我的PXSmartPanel第一次执行后不能显示正确的数据?

来自分类Dev

第一次设置后,我似乎无法设置MKMapView批注标题

来自分类Dev

为什么pgp在我使用--passphrase-fd后第一次询问密码

Related 相关文章

  1. 1

    在第一次匹配后使用grep(或类似方法)获取字符串

  2. 2

    第一次换行后如何获取所有单词?

  3. 3

    第一次如何获取正确的div innerHeight?

  4. 4

    第一次出现子串后获取所有内容

  5. 5

    获取给定日期后特定日期的第一次出现

  6. 6

    获取第一次出现的行

  7. 7

    获取值的第一次出现

  8. 8

    获取第一次命中的 url [webscraping python]

  9. 9

    第一次点击后如何禁用按钮?

  10. 10

    第一次单击时,如何在edittext上获取TimePickerDialog

  11. 11

    如何获取DIV中的第一次出现的文本

  12. 12

    第一次获得条件时如何从条件中获取值?

  13. 13

    如何在android上的Fragment中第一次获取数据

  14. 14

    如何从句子中的arraylist中获取任何单词第一次出现的索引

  15. 15

    在Spring MVC中完成第一次交易后如何调用方法

  16. 16

    在Spring MVC中完成第一次交易后如何调用方法

  17. 17

    使用Python datetime获取每天的第一次和最后一次时间

  18. 18

    为什么我没有在第一次调用我的 REST API 时获取数据

  19. 19

    我正在尝试查询以获取活动,但不包括注册日(第一次出现特定 ID)

  20. 20

    如何基于另一个值的第一次迭代获取Excel值?

  21. 21

    在 FormFlow Bot Framework 中第一次错误尝试后,我如何验证并提供选项列表

  22. 22

    在Maya 2015中,如何获取python重新加载此模块?构造函数仅在第一次运行

  23. 23

    第一次在棉花糖中启动应用程序时如何获取位置信息

  24. 24

    反应-redux。如何在第一次应用程序渲染时获取更新的商店状态

  25. 25

    如何在第一次加载时获取父组件中子组件状态值的总和?

  26. 26

    为什么我的客户端套接字在第一次发送后就死了?

  27. 27

    为什么我的PXSmartPanel第一次执行后不能显示正确的数据?

  28. 28

    第一次设置后,我似乎无法设置MKMapView批注标题

  29. 29

    为什么pgp在我使用--passphrase-fd后第一次询问密码

热门标签

归档