Próbuję skonfigurować wezwanie NS do przesłania zdjęcia do witryny internetowej. Robię to:
- Skonfiguruj obiekt nsinvocation
- Dodaj UIImage * do obiektu nsinvocation jako argument, wraz z kilkoma innymi argumentami
- w razie potrzeby wywołaj nsinvocation
- 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.