Значения аргумента искажаются при вызове функций в Objective-C - PullRequest
0 голосов
/ 23 октября 2011

Так что у меня, кажется, есть спорадическая проблема, которую пока не удалось решить ни одному количеству Google-фу.В кажущихся случайными точках функции просто сломаются, и после некоторой охоты, по-видимому, аргументы начнут повреждаться.

Например

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

...

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

Когда это произойдет, операторы Log в этом случае потерпят неудачучтобы соответствовать, выдавая мне предупреждения EXC_BAD_ACCESS или другие различные проблемы, когда я собираюсь использовать ссылку, которую я передал.

Иногда я могу исправить проблему, добавив «фиктивное значение» к функции следующим образом:

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

и затем вызываем его так:

[testFunction:testObject:1111];

Все объявления моих функций совпадают в файлах .h / .m, единственное, что я могу догадаться, это то, что потенциально в другом месте проектав файлах .h могут отсутствовать соответствующие объявления функций.Однако указанные функции всегда выполняются правильно.(У меня есть двойной, тройной проверил и т. Д.).Я знаю, что это не проблема сохранения / выпуска, хотя я относительно новичок в Objective-C, у меня такой недостаток, и я также проверил его по приборам в поисках утечек, и, похоже, их нет.Есть мысли о том, что может вызвать это, и почему проблемы возникают после изменения, казалось бы, совершенно не связанного кода в другом месте проекта?

1 Ответ

1 голос
/ 23 октября 2011

Ваша проблема, вероятно, в том, что вы неправильно регистрируете свои объекты. Когда вы регистрируете Object, вы не можете просто отформатировать его, как сделали.

Когда вы регистрируете какой-либо код, вам нужно правильно отформатировать его, вы получите неправильные ошибки доступа.

Вы действительно должны прочитать в документации Apple о правильных форматах.

И вы можете сделать это здесь:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...