iOS 8.1.1 iPhone 4s代表无法访问
我有一个应用程序,在所有iPhone 5系列iOS 7+和8+上都可以在iPhone 4 iOS 6上正常运行 但iOS 8.1.1版iPhone 4S在以下方面崩溃: 委托是@property非原子的,assignid委托; 我试图将其更改为“弱”,但由于ARC不允许这样做,因此无法编译: 不确定,我是否应该说服ARC吃掉它,或者这根本不是问题:-/iOS 8.1.1 iPhone 4s代表无法访问,ios,objective-c,iphone,crash,ios8.1,Ios,Objective C,Iphone,Crash,Ios8.1,我有一个应用程序,在所有iPhone 5系列iOS 7+和8+上都可以在iPhone 4 iOS 6上正常运行 但iOS 8.1.1版iPhone 4S在以下方面崩溃: 委托是@property非原子的,assignid委托; 我试图将其更改为“弱”,但由于ARC不允许这样做,因此无法编译: 不确定,我是否应该说服ARC吃掉它,或者这根本不是问题:-/ - (void) timerFireMethod:(NSTimer*)timer { self.counter--; if(
- (void) timerFireMethod:(NSTimer*)timer
{
self.counter--;
if( self.delegate != nil )
{
[self.delegate update:self.counter]; //at this row! ->`EXC_BAD_ACCESS(code=1, address=0xc`
}
else
{
[self stop];
}
}
0 objc_msgSend
1 -[countDownTimer timerFireMethod]
2 __NSFireTimer
...................................
9 UIAplicationMain
10 Main
11 start
注意:我没有使用ARC:
有人能告诉我这个问题的答案吗?
老实说,我甚至不知道去哪里看:一个对象被释放了。柜台的类型是什么?尝试访问委托上的其他内容,以确定解除分配的是委托还是计数器。我们快到2015年了,你不使用ARC,你必须有一个很好的理由!正如消息所说,您的委托调用解除分配对象的方法,并且在检查委托方法时使用`if[self.delegate respondsToSelector:@selectorupdate:]`在dealloc方法中设置一个断点,在这里定义了update:method,可能会得到一些更新hints@BorisCharpentier计数器的类型是int ARC:我刚刚按原样得到了这个项目:在我之前开发它的人在这里做了很多WTF。。另外,我不知道为什么这里不使用ARC,但是我可以看到这个项目最多支持iOS3@Shan谢谢你的建议,我去查一下immidiatly@Shan顺便说一句,我有一个一般性的问题,我是否应该在我使用的每个代表面前添加这个if检查,以避免将来出现此类问题?这是推荐的习惯吗?