(iphone) Является ли CGImageRef NSObject? указатель c?

#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 тип в метод