返回信息流上班走神用 ios objectivec stack size搜了一下,,ios,第二线程512k,主线程1M stack size。
内牛满面。。。
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html
晚上实验了以下把棋路探索的深度减半果然啥问题都没了。然后试了下在主线程不限制深度,果然也诡异位置badaccess崩掉。
明定量试验以下。。。
不过这回AI弱智了好多,总算能下过它了,,,被它虐了快一个月了,总算能小虐以下它了。。。
同一行代码gcd的块里面运行出badaccess但是主线程运行没有任何问题。
这行代码是c写的,只使用了几个全局变量和一个static函数。并且都确认过和那个badaccess没任何关系。
每次复现错误badaccess值都一样。
像下面这样是没有问题的,按照固定的棋局在某一步出现约1s左右的卡顿(那会应该有两百层的递归调用)
dispatch_async(self.computeQueue, ^(){
//这里加延时来让界面更新
dispatch_async(dispatch_get_main_queue(), ^(){
int move = genmove(computermove, NULL, NULL);
[weakSelf.board setPiece:weakSelf.whoPlayThisMove at:I(move) and:J(move)];
_whoPlayThisMove=OTHER_COLOR(_whoPlayThisMove);
[weakSelf.board setNeedsDisplay];
weakSelf.isThingking=NO;
weakSelf.opponentLabel.text=@"GNUGO ROBOT";
});
});
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #11750同步于 2014/1/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
再次求问关于Grand central dispatch的问题
bixiaopeng
2014/1/20镜像同步49 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
你贴这段代码看不出任何东西BadAccess也就是你某个东西被释放了,你这异步切换了两个线程,肯定是最后这个block里面某个弱引用的对象已经释放了,这里最像的就是weakself,你把zombie调试打开就看出来了