我试图做一个NSCalendar的子类,但没有多少运气。我试过两种方法:子类化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。
编辑:这整个事情是当应用程序在后台需要。在前台我使用计时器,就像没有人特别建议的那样。
创建NSobject子类看起来不错,谢谢!它看起来正在被使用,因为当我实际上喂它NSObject派生代替NSCalendar时,出现了一个相当奇怪的模拟器崩溃:) 我曾经把它传递给一个普通的公历日历,没有什么奇特的(我不'无论如何不管用什么日历) – SVD 2010-08-20 21:04:12