我有一个用链接器标志EXC_BAD_ACCESS调用的时候objc_setAssociatedObject:-weak_library /usr/lib/libSystem.B.dylib链接器标志.
我绝对需要链接器标志因为这个,有人知道一个解决方法吗?
(我也遇到了崩溃,dispatch_async但我可以解决这个问题...另外,我正在我的应用程序上构建iOS 4兼容的iOS 3兼容功能)
考虑:
typedef void (^select_block_t)(UIView *) ;
(1) @property (copy, nonatomic) select_block_t myBlockProperty ;
(2) @property (strong, nonatomic) select_block_t myBlockProperty ;
(3) @property (assign, nonatomic) select_block_t myBlockProperty ;
Run Code Online (Sandbox Code Playgroud)
和:
(A) self.myBlockProperty = ^(UIView *) {NSLog(@"Hi");} ;
(B) self.myBlockProperty = [^(UIView *) {NSLog(@"Hi");} copy] ;
Run Code Online (Sandbox Code Playgroud)
我试图了解映射哪个属性声明与块复制语义的正确方法是什么
但后来我对"复制"操作多么冗余感到困惑.我有限的理解是[1:A]应该是正确的,因为我希望在分配属性时复制块一次,而不是在创建块时再复制一次,然后在属性赋值时再次复制.
根据我的理由,[3:B]也有意义.那么,我有什么误解?
升级到Lion和XCode 4.1之后,我遇到了一些iPhone模拟器问题.当我启动4.0,4.1或4.2(我从Time Machine恢复)的模拟器时,我EXC_BAD_ACCESS立即得到一个错误:
0x003c23dc <+0012> call 0x3c23e1 <__springboard_unimplemented+17>
Run Code Online (Sandbox Code Playgroud)
在4.3上,我也立即得到一个EXC_BAD_ACCESS错误,objc_msgSend从我可以看出,它在应用程序启动之前就已经发生了.
我试过清理目标无济于事,NSZombieEnabled似乎没有帮助.
该应用程序在我的iPhone上完美运行.
编辑:卸载并重新安装Xcode,没有帮助.一个空白的新项目运行良好.设置一些断点之后,看起来它在main.m中的这行上失败了(这不是很有帮助):
int retVal = UIApplicationMain(argc, argv, nil, nil);
Run Code Online (Sandbox Code Playgroud)
编辑:根据要求,这里的线程适用所有bt满:
对于4.2模拟器,重复约5800次,每次使用不同的内存地址:
#0 0x003c23dc in __springboard_unimplemented ()
No symbol table info available.
Run Code Online (Sandbox Code Playgroud)
接下来是这样的东西:
#5817 0x003c2548 in __springboard_unimplemented ()
No symbol table info available.
#5818 0x003cacd1 in kill$UNIX2003 ()
No symbol table info available.
#5819 0x90bdbc0c in abort ()
No symbol table info available.
#5820 0x003c2548 in __springboard_unimplemented ()
No symbol table info available.
#5821 0x003cacd1 …Run Code Online (Sandbox Code Playgroud)