通过Objective-C中的函数调用损坏了参数值

时间:2011-10-23 06:00:04

标签: objective-c function arguments

所以我似乎有一个零星的问题,到目前为止,没有多少谷歌能够解决。在看似随机的点上,函数将会破坏,并且在一些搜索之后,似乎参数将开始被破坏。

例如

Object * testObject = [[Object alloc] init];
NSLog(@"ID: %d", testObject);
[testFunction:testObject];

...

- (void) testFunction:(id)testObject
{
    NSLog(@"ID: %d", testObject);

当发生这种情况时,在这种情况下,Log语句将无法匹配,当我使用我传递的引用时,会给出EXC_BAD_ACCESS警告或其他各种问题。

有时我可以通过对函数添加'Dummy value'来解决问题:

- (void) testFunction:(id)testObject:(int)dummy
{

然后像这样调用它:

[testFunction:testObject:1111];

我的函数声明在.h / .m文件中都匹配,我唯一可以猜到的是,在项目的其他地方可能会丢失.h文件中相应的函数声明。但是,有问题的功能总是正确完成。 (我有双重,三重检查等)。我知道这不是一个保留/发布问题,而我对Objective-C相对较新我有这个问题,而且我也通过Instruments查找泄漏并且似乎没有。关于可能导致这种情况的任何想法,以及为什么在项目中其他地方改变看似完全不相关的代码后会出现问题?

1 个答案:

答案 0 :(得分:1)

您的问题可能是您以错误的方式记录对象。 当您记录Object时,您不能像以前那样对其进行格式化。

当您记录任何代码时,您需要精确地对其进行格式化,否则会出现错误的访问错误。

您应该阅读有关正确格式的Apple文档。

你可以在这里做到这一点:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html