Iphone: NSInvocation меняет ссылки на аргументы? - PullRequest
1 голос
/ 24 августа 2009

Я пытаюсь настроить NSinvocation для загрузки изображения на сайт. Я делаю это:

  1. Настройка объекта nsinvocation
  2. Добавьте UIImage * к объекту nsinvocation в качестве аргумента вместе с некоторыми другими аргументами
  3. при необходимости вызывать nsinvocation
  4. функция, вызываемая, когда я вызываю nsinvocation, не может получить доступ к UIImage - я получаю NSInvalidArgumentException.

После небольшого копания выглядит так, будто я добавляю UIImage в качестве аргумента к своему объекту NSInvocation, затем пытаюсь вернуть его ... Мне возвращают другой адрес памяти! Это нормально?

// Сначала у меня есть действительный UIImage "imgHolder", который имеет адрес памяти "A" ...

NSInvocation * myInvocation = [NSInvocation invocationWithMethodSignature: ...

[myInvocation setArgument: imgHolder atIndex: 5];

// Теперь странная часть ...

UIImage * checkImg;

[myInvocation getArgument: & checkImg atIndex: 12];

// checkImg имеет адрес памяти "B"!

если я пытаюсь работать с checkImg, я получаю различные исключения, которые заставляют меня поверить, что это недопустимый UIImage.

Есть идеи, что происходит? Разве адрес памяти checkImg не должен совпадать с адресом imgHolder?

1 Ответ

1 голос
/ 24 августа 2009

[myInvocation setArgument:imgHolder atIndex:5];

Если imgHolder является UIImage *, вы должны передать & imgHolder, а не imgHolder.

...