【发布时间】:2010-08-19 21:44:05
【问题描述】:
我正在尝试创建 NSCalendar 的子类,但运气不佳。我尝试了两种方法:
完整的类别。我可以创建一个修改过的对象和一个我添加的测试方法(不是 NSCalendar 的一部分)工作得很好,但覆盖的方法不起作用 - 例如如果我调用 dateFromComponents:,显然调用的是 NSCalendar 方法,而不是我在类别定义中写的
常规子类。在这种情况下,我什至无法创建实例:initWithCalendarIdentifier 引发 _CFRequireConcreteImplementation 异常。最初我只在子类中重写了几个方法,但后来我重写了所有(记录在案的)NSCalendar 方法 - 结果是一样的。
甚至可以继承 NSCalendar 吗?
我想这样做的原因是使用非标准重复间隔重复本地通知。默认功能允许本地通知重复每个 [日历单位],但我需要不规则的间隔 - 例如我可以通过间隔 15 分钟创建 4 个“每小时”通知来模拟“每 15 分钟”通知,但我需要它们在 T+20、T+22、T+24、T+44、T+46 时触发, T+66 分钟以此类推(T 是开始时间)- 通知之间的间隔是 20 分钟,然后是 2 分钟,然后是 20 分钟,以此类推。
我希望,由于 UILocalNotification 想要一个 NSCalendar(在 repeatCalendar 属性中)来计算何时触发下一个通知,我可以通过覆盖 dateFromComponents 来实现我想要的,只返回 [NSDate dateWithIntervalSinceNow] 间隔交替20 和 2 分钟 - 但我的狡猾计划似乎有一个大问题,因为无法继承 NSCalendar。
编辑:当应用程序在后台时,需要这整件事。在前台我使用计时器,就像没有人特别建议的那样。
【问题讨论】:
标签: iphone