- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有生产代码,我发现它偶尔会因 block 处理程序上的 EXC_BAD_ACCESS
KERN_INVALID_ADDRESS
崩溃。我可以用我的一生找出我的代码出了什么问题。我试图重现这一点,但无法在我的受控环境中重现。这是剥离和清理的代码:
代码片段:
typedef void (^TestCallBackHandler)(NSString* location, NSError* error);
@interface _TestClass : NSObject
@property (nonatomic, copy) TestCallBackHandler handler;
@property (nonatomic, strong)NSTimer *endTimer;
- (void)fireOneOff:(TestCallBackHandler)handler;
@end
@implementation _TestClass
- (void)fireOneOff:(TestCallBackHandler)handler
{
_handler = handler;
NSLog(@"** New %p %@ Incoming %p, %@ Ours %p %@",self,self,handler, handler, _handler, _handler);
_endTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(_stop) userInfo:nil repeats:NO];
}
- (void)dealloc
{
NSLog(@"%@ Dealloced",self);
_handler = nil;
}
- (void)_stop
{
NSLog(@"** Stopping ? %@",self);
if (_handler)
_handler([NSString stringWithFormat:@"Hello %@",[NSDate date]], nil);
}
@end
我的类中的调用代码定义为:
@property (nonatomic, strong)_TestClass *testClassInstance;
并这样调用:
- (void)startTestClass {
_testClassInstance = [[_TestClass alloc] init];
[_testClassInstance fireOneOff:^(NSString *newString, NSError *error) {
NSLog(@"Got new String! %@",newString);
_testClassInstance = nil;
}];
}
有几点需要注意:
任何指示,非常感谢。我只是不能 Handlebars 指放在这段代码中并说这是错误的。请帮忙!
最佳答案
两个提示对我来说有点奇怪:
首先:为什么要在对象自己的 block 中将对象设置为 nil。
- (void)startTestClass {
_testClassInstance = [[_TestClass alloc] init];
[_testClassInstance fireOneOff:^(NSString *newString, NSError *error) {
NSLog(@"Got new String! %@",newString);
_testClassInstance = nil;
}];
}
其次,您的对象可能已经被释放,并且 NSTimer 正在尝试在释放对象上执行方法
- (void)fireOneOff:(TestCallBackHandler)handler
{
_handler = handler;
NSLog(@"** New %p %@ Incoming %p, %@ Ours %p %@",self,self,handler, handler, _handler, _handler);
_endTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(_stop) userInfo:nil repeats:NO];
}
我也不明白代码到底做了什么以及为什么。我相信对于您在本类(class)中所取得的成就来说,会有一个更简单、更好维护的解决方案。
关于ios - 踩在 block 处理程序的 "EXC_BAD_ACCESS KERN_INVALID_ADDRESS"上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39614221/
当我们浏览网页时,我们想对网页内容如文章、评论中的观点持赞同或反对意见时,可以通过点击网页中的“顶”和“踩”来进行投票。而整个交互过程,开发者可以通过ajax异步来实现,从而提高用户体验
我以为我了解了python中列表切片的基础知识,但是在切片上使用负步骤时收到了意外错误,如下所示: >>> a = list(range(10)) >>> a [0, 1, 2, 3, 4, 5, 6
本文实例为大家分享了基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码,供大家参考,具体内容如下 数据库操作: ?
我是一名优秀的程序员,十分优秀!