2

아래의 3 행에서 컴파일러 오류 'receiver' is unavailable: this system field has retaining ownership을 어떻게 수정합니까?ARC에서 objc_super.receiver를 사용할 수없는 이유는 무엇입니까?

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:)); 
} 
+0

malloc과 struct objc_super에 대한 포인터를 사용하면 어떻게됩니까? –

답변

2

ARC를 사용하면 C-Structs에서 Objective-C 개체에 대한 포인터를 저장할 수 없습니다.

브리징 캐스팅을 시도하셨습니까?

super.receiver = (__bridge void*)self; 
0

objective-c (.mm 파일) 대신 objective-C++를 사용하십시오.

관련 문제