目标 C(iphone) 变量在方法调用中更改



我正在运行一个 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"

最新更新