Sin propietario Local of Harmony Foundation reduce la sobrecarga de RC (conocimiento básico del desarrollo de HarmonyOS HarmonyOS)

¿Qué es UnownedLocal?

Anotar métodos o variables locales individuales.
Anotar una sola variable local significa excluir referencias de instancia de esta variable del recuento de referencias. Anotar un método significa revocar la propiedad del método de todas las variables locales (explícitas o implícitas) del objeto referenciado y excluir las referencias a estas variables del recuento de referencias del objeto referenciado.

El propósito de UnownedLocal es reducir la sobrecarga de RC, no eliminar las referencias circulares.

Para el método inseguro HashMap.containsValue en modo multiproceso, otros subprocesos no pueden modificar el HashMap sincrónicamente. Por lo tanto, la lectura de tablas internas y nodos en HashMap no se incluye en el recuento de referencias, por lo que los objetos referenciados no se liberarán. En este caso, puede utilizar UnownedLocal para anotar el objeto en el método.

   @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;
   }
 

Se prohíbe la reimpresión no autorizada


Para intercambios más técnicos, únase al grupo QQ

Nombre del grupo: harmonyos Hongmeng Technology Exchange
Group number: 856567895


Empiece de cero para aprender sobre el desarrollo de HarmonyOS Hongmeng 2.0

Supongo que te gusta

Origin blog.csdn.net/iCloudEnd/article/details/108698509
Recomendado
Clasificación