codecamp

鸿蒙OS 本地Unowned

注释方法或单个局部变量。

注释单个局部变量意味着从引用计数中排除此变量的实例引用。注释方法意味着撤消该方法对引用对象的所有局部变量(显式或隐式)的所有权,并从引用对象的引用计数中排除这些变量的引用。

UnownedLocal 的目的是减少 RC 开销,而不是消除循环引用。

对于在多线程模式下不安全的 HashMap.containsValue 方法,不允许其他线程同步修改 HashMap。因此,对 HashMap 中内部表和节点的读取不包括在引用计数中,因此不会释放所引用的对象。在这种情况下,可以使用 UnownedLocal 在方法中注释对象。

请参考以下示例代码:

   @UnownedLocal
   public boolean containsValue(Object value) {
       Node<K,V>[] tab;
       V v;
       if ((tab = table) != null && size > 0) {
           for (int i = 0; i < tab.length; ++i) {
               for (Node<K,V> e = tab[i]; e != null; e = e.next) {
                   if ((v = e.value) == value || (value != null && value.equals(v)))
                   return true;
               }
           }
       }
       return false;
   }

 
   public boolean containsValue(Object value) {
       Node<K,V>[] @Unowned tab;
       V @Unowned v;
       if ((tab = table) != null && size > 0) {
           for (int i = 0; i < tab.length; ++i) {
               for (Node<K,V> e = tab[i]; e != null; e = e.next) {
                   if ((v = e.value) == value || (value != null && value.equals(v)))
                       return true;
               }
           }
       }
       return false;
   }

 
鸿蒙OS Unowned
鸿蒙OS 外层UnownedOuter
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }