objective-c - 为什么 objc_super.receiver 在 ARC 中不可用?

标签 objective-c automatic-ref-counting superclass objective-c-runtime

如何修复下面第 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:));
}

最佳答案

使用 ARC,C-Structs 无法存储指向 Objective-C 对象的指针。

你尝试过像这样的桥接 Actor 吗?

super.receiver = (__bridge void*)self;

关于objective-c - 为什么 objc_super.receiver 在 ARC 中不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9331119/

相关文章:

ios - 在这个block中强捕获 'self'很可能会导致retain cycle

ios - 在非官方库中禁用 ARC 会导致 Apple 出现问题?

java - 为什么嵌套类的对象不能用作父类(super class)型构造函数的参数?

ios - Touch drag enter 如何工作?

ios - 如何在 Objective C 中的 UIViewController 上添加 UITabbar Controller 和 UINavigation 栏

objective-c - 在仅单例类的非初始化方法名称中使用 'init' 的 ARC 含义是什么

ios - 将对象分配给 Objective-C 中的弱引用?

java - 使用java中的父类(super class)对象创建未知子类的新实例

python - 有没有办法从类范围引用对象的基类 __class__ ?

ios - xcode 5 水平 ScrollView 不工作 (iOS7)