#iphone #types #cgimage
#iPhone #типы #cgimage
Вопрос:
Я хотел бы передать переменную CGImageRef в performSelectorOnMainThread
достаточно ли здесь обернуть ее внутри NSValue с помощью valueWithPointer?
Какой тип CGImageRef?
Является ли это определением типа указателя c?
Спасибо
Ответ №1:
CGImageRef
является указателем на CGImage
c-struct. В вашем случае должно быть достаточно просто привести его к типу id:
[obj performSelectorOnMainThread:someSEL withObject:(id)cgImageRef];
Комментарии:
1. Спасибо, разве performSelectorOnMainThread не сохранил бы объект? Я боялся, что performSelector сохранит указатель c, что не имело бы смысла. ?
2. Я не могу найти ссылку на это сейчас, но, если я правильно помню, типы CG можно сохранить так же, как и обычные типы obj-c — [(id)CGImageRef retain] может быть допустимым кодом… И вы можете поместить CGImages в NSArray (может быть полезно, если вы хотите выполнить CAAnimation для содержимого слоя)
3. В любом случае — это управление памятью обрабатывается системой, и объект будет освобожден (или автоматически освобожден) при вызове селектора, поэтому, если это сработает, управление памятью для вас не проблема
4. как вы думаете, подход NSValue valueWithPointer / pointerValue также подходит?
5. да, такой подход тоже хорош, imo. это может быть понятнее, поскольку вы видите, что вы фактически передаете obj-c тип в метод