Alloc et Swift 2

Bonsoir à  tous,


 


Dans une fonction parser d'une de mes applications, j'ai le code NSMutableDictionary.alloc() ou NSMutableString.alloc().


Cependant avec Xcode 7 et Swift 2 cela ne fonctionne plus.


Que faudrait-t-il faire ?


 


Merci.


 


 


Réponses

  • AliGatorAliGator Membre, Modérateur
    septembre 2015 modifié #2
    En ObjC un alloc est TOUJOURS suivi d'un init.

    En Swift on ne fait pas de alloc du tout. On fait directement le init. Je suis même étonné si tu dis que ton alloc() avait marché en Swift avant Xcode 7
  • J'allais répondre qu'il suffit d'écrire :



    var str = NSMutableString(string: "Swift c'est le Bien !")

    Mais Xcode 7 a hurlé (warning) qu'il fallait remplacer le var par un let car "Variable 'str' was never mutated; consider changing to 'let' constant"


     


    ça me fait étrange de considérer une variable Mutable comme constante.


     


    J'ai alors ajouté une petite "mutation" dans le code



    var str = NSMutableString(string: "Swift c'est le Bien !")
    str.appendString(" Et une mutation pour la table 2.")
    print(str)

    Mais cela ne change rien. Le warning est toujours le même. La seule manière de le museler est de lui accorder son let



    let str = NSMutableString(string: "Swift c'est le Bien !")
    str.appendString(" Et une mutation pour la table 2.")
    print(str)
  • AliGatorAliGator Membre, Modérateur
    Oui cela fait partie des bizarreries de l'héritage d'ObjC et de ses variantes "Mutable" de ses classes.
  • L'objet référencé est mutable mais pas la référence elle-même.


  • C'est ce que je me suis dis, mais ça fait bizarre quand même.

  • Merci!


    en revanche j'ai un autre souci :


    un bon nombre de mes vues s'affichent en mode present modally alors que tout est paramétré en mode Show (e.g. Push) ! (par exemple à  la suite d'un clic sur une cellule d'une TableView pour avoir le détail)


    Quelqu'un a eu ce problème ?


    Merci


  • Tu devrais créer un autre topic pour ton problème, qui n'a rien à  voir avec la création d'un objet.

Connectez-vous ou Inscrivez-vous pour répondre.