我正在运行一个 ARC 项目,我注意到有些东西搞砸了我的项目。在下面的代码块中,
- (void)didTapSuggestionButton:(id)sender {
//[_buttonDelegate suggestionButtonPressed:[sender currentTitle]];
//NSLog(@"current title is %@",[sender currentTitle]);
}
在第一行的断点中,我在调试控制台中看到以下内容。
self freeFormAutoCompleteScroller *const 0x0000ace9
UIScrollView UIScrollView
suggestionButton NSMutableArray * 0x6e65006e
_buttonDelegate objc_object * 0x00646564
艾萨objc_class * 0x00000008
发件人 ID 0x06d7f3f0 [0] ID
但是在第二行我看到:
self freeFormAutoCompleteScroller *const 0x06d7f3f0
UIScrollView UIScrollView suggestionButton NSMutableArray * 0x00000000
_buttonDelegate objc_object * 0x00000000
ISA objc_class * 发件人 ID 0x06babf30 [0] ID
"自我"开始引用另一个内存地址?即使我什么都没做?这是怎么回事?
这可能是因为代码同时在另一个线程上调用,请检查调用堆栈。
你不应该写吗
NSLog(@"current title is %@",[sender currentTitle]);
?
coolio,
第一个转储中的许多值都是未初始化的。例如:
self freeFormAutoCompleteScroller *const 0x0000ace9
self
永远不会奇怪。
下面是一个极不可能的类对象地址:
isa objc_class * 0x00000008
我怀疑您不知何故没有retain
按钮按下target
的对象。换句话说,您正在尝试执行随机内存。您的问题不在于此方法。
安德鲁
如果它是由 UIButton 调用的,请尝试将 (id)sender 修改为 "(UIButton *)sender"