Supongo que al declarar la cadena como estática, cada vez que pasa a -dequeueReusableCellWithIdentifier:CellIdentifierforIndexPath:
se usa el mismo puntero cada vez (como las variables declaradas estáticamente se asignan solo una vez en el montón, muy temprano en la ejecución del programa
[NSString -isEqualToString:]
es muy probable que se implemente para realizar una comparación de puntero primero, seguido de una comparación de caracteres como la alternativa, que supuse que podría restar unos ciclos en cada iteración.
No hay mucho que ganar con esto, ya que (a) la repoblación de celdas de tabla opera en un conjunto de celdas típicamente muy pequeño, está bien optimizado y (b) la actualización de tabla es en ráfagas. luego no vuelve a suceder hasta que el usuario se desplaza o la lógica de la aplicación cambia el contenido: si termina llamando al -reloadTable
100 veces por segundo, es evidente que hay un problema con la lógica de la aplicación.
Sospecho que la palabra clave estática es una convención legada vestigial - tal vez en el día, Apple hash en el puntero, en lugar de realizar una comparación de cadena adecuada.
Si al "hacer uno cada vez" quiere decir "presionar un puntero constante en una variable de pila", claro. Pero es tan caro como decir 'int i = 3;', ya que el compilador compiló '@" Identifier "' en una constante. La única vez que la estática sería en realidad una ventaja es si la cadena se construye en tiempo de ejecución en lugar de usar una cadena constante. –
Eso sigue siendo un beneficio. Corta dos ciclos de procesador cada vez que se ejecuta el método (lo que podría ser muchas veces). – ughoavgfhw
@ughoavgfhw, sí, pero ¿no aumenta el tamaño de tu binario y hace que tu aplicación use más memoria? – ma11hew28