Почему objc_super.receiver недоступен в ARC? - PullRequest
2 голосов
/ 17 февраля 2012

Как исправить ошибку компилятора 'receiver' is unavailable: this system field has retaining ownership в строке 3 ниже?

UIKIT_STATIC_INLINE void sample_drawRect(id self, SEL _cmd, CGRect rect) {
    struct objc_super super;
    super.receiver = self;
    super.super_class = class_getSuperclass([self class]);
    objc_msgSendSuper(&super, @selector(drawRect:));
}

Ответы [ 2 ]

2 голосов
/ 17 февраля 2012

С ARC C-Structs не может хранить указатели на объекты Objective-C.

Вы пробовали использовать связующее звено, как это?

super.receiver = (__bridge void*)self;
0 голосов
/ 06 июля 2012

Используйте цель-с ++ вместо объектива-с (файл .mm).

...