Iphone 亚类化NSCalendar?
我正在尝试创建NSCalendar的一个子类,但运气不好。我试过两种方法:Iphone 亚类化NSCalendar?,iphone,Iphone,我正在尝试创建NSCalendar的一个子类,但运气不好。我试过两种方法: 彻底分类。我可以创建一个修改过的对象和一个我添加的测试方法(不是NSCalendar的一部分)工作得很好,但重写的方法不起作用-例如,如果我调用dateFromComponents:,则NSCalendar方法显然被调用,而不是我在类别定义中编写的方法 正则子类。在这种情况下,我甚至无法创建一个实例:initWithCalendarIdentifier抛出一个_CFRequireConcreteImplementatio
编辑:当应用程序在后台时,这一切都是必需的。在前台,我使用计时器,就像没有人特别建议的那样。尝试使用NSTimer方法
+ (NSTimer *)scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
将重复设置为TRUE,时间间隔为2分钟。将计数器设置为1或10。每次调用选择器时,当您执行工作并重置计数器时,您都会将计数器递减到0。即使您成功地将NSCalendar子类化,我怀疑它是否会工作。我强烈怀疑SpringBoard安排了本地通知,我不认为它会在每次需要查看下一个fire日期时启动/恢复你的应用程序 第一步是找出UILocalNotification对日历的作用。最简单的方法是编写一个NSObject子类,它转发未定义的方法调用并打印日志消息(respondsToSelector:,methodSignatureForSelector:,forwardInvocation:)。通常,您需要类似于
if([super respondsToSelector:selector]){return[super…];}else{return[target…];}
然后,最简单的方法是编写一个类,该类实现了NSCalendar的必要方法
您也可以考虑调用<代码> [Super init ] < /> >;code>-[NSCalendar initWithCalendarIdentifier:可能会返回不同的
self
(例如[self release];return[[NSGregorianCalendar alloc]init]
),您不希望这样。您要传递什么日历标识符?也许它在抱怨它需要一个“具体的实现”,它知道您要传递的日历标识符。从NSCalendar直接继承很棘手,因为我认为它是一个类集群。我对这个概念有点模糊,所以我会给你一个苹果文档的链接,而不是让自己更傻
NSTimer很酷,但在后台不起作用(我需要它作为后台)-抱歉,我似乎不清楚这一点。当应用程序在后台挂起时,计时器不会运行,这就是重复本地通知的全部目的。创建NSobject子类看起来是个好主意,谢谢!看起来它被用在了某种程度上,因为当我真的给它输入了NSObject衍生工具而不是NSCalendar时,出现了一个相当奇怪的模拟程序崩溃:)我过去给它传递了一个普通的公历,没什么特别的(而且我也不在乎用什么日历)