0

我正在运行一个 ARC 项目,我注意到一些事情正在搞乱我的项目。在下面的代码块中,

- (void)didTapSuggestionButton:(id)sender {
//[_buttonDelegate suggestionButtonPressed:[sender currentTitle]];
//NSLog(@"current title is %@",[sender currentTitle]);
}

在第一行的断点中,我在调试控制台中看到以下内容。

自 freeFormAutoCompleteScroller *const 0x0000ace9

UIScrollView UIScrollView

建议按钮 NSMutableArray * 0x6e65006e

_buttonDelegate objc_object * 0x00646564

ISA objc_class * 0x00000008

发件人 id 0x06d7f3f0 [0] id


但是在第二行中,我看到:

自 freeFormAutoCompleteScroller *const 0x06d7f3f0

UIScrollView UIScrollView 建议按钮 NSMutableArray * 0x00000000

_buttonDelegate objc_object * 0x00000000

isa objc_class * 发件人 id 0x06babf30 [0] id


“自我”开始引用另一个内存地址?即使我什么都没做?这是怎么回事?

4

4 回答 4

0

酷利欧,

您的第一个转储中的许多值都未初始化。例如:

self freeFormAutoCompleteScroller *const 0x0000ace9

self永远不能奇怪。

这是一个极不可能的类对象地址:

isa objc_class * 0x00000008

我怀疑你不知何故没有按下按钮retain的对象target。换句话说,您正在尝试执行随机内存。您的问题不在此方法中。

安德鲁

于 2012-07-01T15:24:26.967 回答
0

这可能是因为代码同时在另一个线程上被调用,请检查调用堆栈。

于 2012-07-01T08:27:39.040 回答
0

你不应该写吗

NSLog(@"current title is %@",[sender currentTitle]);

?

于 2012-07-01T08:30:03.563 回答
0

如果它由 UIButton 调用,请尝试将 (id)sender 修改为“(UIButton *)sender”

于 2012-07-01T15:27:01.447 回答