traducir significado significa que mutabilidad ingles español definicion concepto buscar alimentaria protocols swift2 ios9 swift-extensions swift-protocols

protocols - que - significado de mutabilidad alimentaria



Swift 2 Error al utilizar la función de mutación en la extensión del protocolo "No se puede usar el miembro de mutación en un valor inmutable: ''self'' es inmutable (1)

El problema es que, en el protocolo, marca la función como mutante, lo que debe hacer si desea usar el protocolo en una estructura. Sin embargo, el self que se pasa a testFunc es inmutable (es una referencia a una instancia de la clase) y eso está activando el compilador. Esto tendría sentido si testClass fuera realmente una estructura y usted podría hacer que la función mute para resolver el problema.

Puedo ver dos alrededores:

  1. hacer la clase de protocolo solamente

    protocol MTKAnimateValueDelegate: class { ...

  2. Haga de testClass una estructura y marque testFunc como mutante.

De cualquier manera, creo que este es un error que debe ser reportado a Apple.

No estoy seguro de lo que está pasando aquí, parece que debería ser bastante sencillo. Tengo un protocolo que var mutable, una extensión con una función de mutación. Las cosas se están agotando en el testClass.testFunc , cuando intento usar mtkAnimQueAppend declarado en la extensión, aparece este error: "No puedo usar el miembro mutante en valor inmutable: ''self'' es inmutable.

protocol MTKAnimateValueDelegate { var mtkAnimQue:[MTKAnimateValue]? {get set} } extension MTKAnimateValueDelegate { ///Adds element to que mutating func mtkAnimQueAppend(element:MTKAnimateValue) { if mtkAnimQue != nil { mtkAnimQue?.append(element) } else { mtkAnimQue = [element] } } } class testClass: MTKAnimateValueDelegate { var mtkAnimQue:[MTKAnimateValue]? func testFunc() { var animValue = MTKAnimateValue(fromValue: 10, toValue: 20, inSeconds: 2) animValue.isAnimating = true mtkAnimQueAppend(animValue) //ERROR: "Cannot use mutating member on immutable value: ''self'' is immutable } }