为什么';t J2ObjC将字段转换为@Weak as_uuuweak但未恢复?
正如我们所知,为什么';t J2ObjC将字段转换为@Weak as_uuuweak但未恢复?,j2objc,J2objc,正如我们所知,\uuuuuuuuuuuuuu unrepaired不如\uuuuuuu-weak那么安全,那么为什么J2ObjC不将带有@weak的字段转换为\uuuuuuuuuuuuu-unrepaired __弱仅在ARC代码中有效,并且由于明显的性能成本,JRE仿真库不是用ARC构建的 在目标C中,我们可以通过测试a__弱场是否为零来测试它是否被释放。因为在Java中,对于普通的引用没有办法做到这一点,所以依赖于此行为的代码依赖于平台(即,在Android上不起同样的作用) J2ObjC支
\uuuuuuuuuuuuuu unrepaired
不如\uuuuuuu-weak
那么安全,那么为什么J2ObjC不将带有@weak
的字段转换为\uuuuuuuuuuuuu-unrepaired
J2ObjC支持该软件包,因此如果您希望使用弱引用的跨平台方式,请使用WeakReference而不是@weak。谢谢!我原以为Java的
WeakReference
会被翻译成\uu week
,但发现它使用了翻译后的Java/lang/ref/WeakReference
类。我查看了翻译后的WeakReference
的源代码,但没有找到类似于\uu-weak
,它在ARC下是如何工作的?(我有一个循环引用,必须使用weak
来打破它)一个u unsafe_unrepaired注释解析一个引用循环,这就是为什么j2objc将@weak转换为它。唯一的区别_unsafe_unrepaired和_weak是后者在实例解除锁定时也会将字段归零。对于已翻译的代码来说,这不是问题,因为当实例被解除锁定时,编译器不应该允许引用实例的字段。如果您需要在代码中对字段行为进行归零,请使用java.lang.ref.WeakReference。谢谢您的回答!我已经切换到java.lang.ref.WeakReference
,但我有点好奇翻译的java.lang.ref.WeakReference
在objc中是如何工作的,它是否在内部使用\uu-weak
?不,我基于Mike Ash的一篇伟大文章中的java.lang.ref支持:。这是支持课:谢谢!我原以为Java的WeakReference
会被翻译成\uu week
,但发现它使用了翻译后的Java/lang/ref/WeakReference
类。我查看了翻译后的WeakReference
的源代码,但没有找到类似于\uu-weak
,它在ARC下是如何工作的?(我有一个循环引用,必须使用weak
来打破它)一个u unsafe_unrepaired注释解析一个引用循环,这就是为什么j2objc将@weak转换为它。唯一的区别_unsafe_unrepaired和_weak是后者在实例解除锁定时也会将字段归零。对于已翻译的代码来说,这不是问题,因为当实例被解除锁定时,编译器不应该允许引用实例的字段。如果您需要在代码中对字段行为进行归零,请使用java.lang.ref.WeakReference。谢谢您的回答!我已经切换到java.lang.ref.WeakReference
,但我有点好奇翻译的java.lang.ref.WeakReference
在objc中是如何工作的,它是否在内部使用\uu-weak
?不,我基于Mike Ash的一篇伟大文章中的java.lang.ref支持:。以下是支持类: