Цель c — Как указать свойство указатель C ++ в среде ARC?

Мне нужно добавить свойство указателя C ++ в мой класс Obj-C. Проект основан на ARC. Я хочу, чтобы в собственности были геттер и сеттер. Но выделение этого указателя C ++ не может управляться средой Obj-C, как я понимаю, поэтому мне нужно указать слабый указатель или что-то еще?

0

Решение

Указатели C / C ++, включая указатели на объекты C ++, не подчиняются ARC и обрабатываются аналогично другим примитивным типам, таким как целые числа. Для свойств это означает, что вы используете assign, Например.:

@property (assign) int *intPtrValuedProperty

Вы должны управлять выделением и освобождением ссылочной памяти вручную, как в C / C ++.

1

Другие решения

Попробуйте следующее:

NSObject* arcObject = [[NSObject alloc] init];
void* arcObjectPointer = (__bridge void*)arcObject;

void* cObjectPointer = NULL;
NSObject* cObject = (__bridge NSObject*)cObjectPointer;

Поведение для объектов __bridge такое же, как и для объектов не-ARC. Используя __bridge, вы сообщаете ARC, что понимаете последствия и потенциальные опасности.

0