我有如下调用堆栈的崩溃报告。由于我无法重新生成错误,我必须猜测发生了什么。
NSInvalidArgumentException
---------------------
-[__NSBlockVariable__ profile_data]: unrecognized selector sent to instance 0xab2f620
---------------------
0 CoreFoundation 0x378688a7 __exceptionPreprocess + 186
1 libobjc.A.dylib 0x35d6e259 objc_exception_throw + 32
2 CoreFoundation 0x3786ba9b -[NSObject doesNotRecognizeSelector:] + 174
3 CoreFoundation 0x3786a915 ___forwarding___ + 300
4 CoreFoundation 0x377c5650 _CF_forwarding_prep_0 + 48
5 TouchPalDialer 0x0005096f -[InfoEditViewControllerNew textFieldDidEndEditing:] + 134
引发崩溃的代码应该类似于
profile_data_manager.profile_data.name = [textField.text stringByTrimmingCharactersInSet:whitespace];
profile_data_manager 肯定是类类型 ProfileDataManager,并且肯定有 property@property(nonatomic, retain) ProfileModel *profile_data;
我不知道为什么 profile_data_manager 变成了NSBlockVariable,以及为什么它不能识别 profile_data。
我看到这篇文章Calling delegate method, unrecognized selector because sent to wrong object说将非原子更改为原子解决了他的问题。
我不确定我的崩溃是否出于同样的原因。如果有人可以向我展示一些关于 NSBlockVariable 的资源解释,那就太好了,这样我就可以更好地理解原因。
谢谢!