/ / Iphone: NSInvocation zmienia odniesienia do argumentów? - iphone, referencje, adres pamięci

Iphone: NSInvocation zmienia referencje argumentów? - iphone, referencja, adres pamięci

Próbuję skonfigurować wezwanie NS do przesłania zdjęcia do witryny internetowej. Robię to:

  1. Skonfiguruj obiekt nsinvocation
  2. Dodaj UIImage * do obiektu nsinvocation jako argument, wraz z kilkoma innymi argumentami
  3. w razie potrzeby wywołaj nsinvocation
  4. funkcja wywoływana podczas wywoływania nsinvocation nie może uzyskać dostępu do UIImage - otrzymuję NSInvalidArgumentException.

Po chwili kopania wygląda na to, że jeśli dodam UIImage jako argument do mojego obiektu NSInvocation, a następnie spróbuję go odzyskać ... Otrzymuję inny adres pamięci! Czy to normalne?

//Najpierw mam prawidłowy UIImage „imgHolder”, który ma adres pamięci „A” ...

NSInvocation * myInvocation = [NSInvocation invocationWithMethodSignature: ...

[myInvocation setArgument: imgHolder atIndex: 5];

//A teraz dziwna część ...

UIImage * checkImg;

[myInvocation getArgument: & checkImg atIndex: 12];

//checkImg ma adres pamięci „B”!

jeśli próbuję pracować z checkImg, pojawiają się różne wyjątki, co prowadzi mnie do przekonania, że ​​to nie jest poprawny UIImage.

Jakieś pomysły, co się dzieje? Czy adres pamięci checkImg nie powinien być identyczny z adresem imgHolder?

Odpowiedzi:

1 dla odpowiedzi № 1

[myInvocation setArgument:imgHolder atIndex:5];

Jeśli imgHolder to UIImage *, należy przekazać & imgHolder, a nie imgHolder.