Aller au contenu


Photo

Mon Nouveau Blog Swift


  • Please log in to reply
45 réponses à ce sujet

#21 GoodGood

GoodGood

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 44 messages

Posté 13 avril 2017 - 22:15

Comment lis-tu les docs d'Apple sur les APIs ?

 

Google traduction est mon ami :)


  • Draken aime ceci

Celui qui aime son métier ne travaillera jamais.

Mon app : https://itunes.apple...1180413207?mt=8

 


#22 samir

samir

    Torréfacteur de fèves

  • Artisan chocolatier
  • PipPipPipPipPip
  • 815 messages

Posté 13 avril 2017 - 22:32

Mais de la même page:

Pour accentuation, They both deal with the interaction between the delegat-ing class and delegate class

Même source, la première phrase:

"The delegate and datasource patterns are largely independent, and orthogonal"


"Dis-lui de passer son chemin car Leïla m'empêcherait un instant de penser à l'amour de Leïla." in Majnûn Laylâ

 


#23 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 999 messages
  • LocationPlestin-les-Grèves (22)

Posté 13 avril 2017 - 22:43

"The delegate and datasource patterns are largely independent, and orthogonal"


Mais, c'est quoi la vérité ?

#24 FKDEV

FKDEV

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 660 messages

Posté 16 avril 2017 - 14:32

Les deux sont des delegates dans le sens où un objet delegate est un objet à qui un autre objet peut délèguer des traitements via un protocole.

Si tu dis qu'un delegate est spécialisé dans le traitement des événements UI, alors comment appelles-tu ce que j'ai décrit ci-dessus ?

 

Le datasource est un delegate spécialisé dans la fourniture de donnée, on aurait pu l'appeler datadelegate et l'autre est un delegate spécialisé dans le traitement des événements UI, on aurait pu l'appeler uieventdelegate.

 

 

Regarde dans la webview du mac, il y a toute sorte de delegates :

WebFrameLoadDelegateWebPolicyDelegateWebResourceLoadDelegate, and WebUIDelegate.


  • Draken et Joanna Carter aiment ceci

#25 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 999 messages
  • LocationPlestin-les-Grèves (22)

Posté 25 avril 2017 - 12:28

La deuxième partie de mon article sur Observers, Events and Closures est désormais disponible sur mon blog https://joannamacdev...losures-Part-2/



#26 LeChatNoir

LeChatNoir

    Brasseur de pâte à cacao

  • Artisan chocolatier
  • PipPipPipPipPipPipPip
  • 3 194 messages
  • LocationLyon

Posté 26 avril 2017 - 13:33

[an error occurred while processing this directive]

 

WTF ?


Le Chat Noir, développeur à ses heures...
Application passion => ClimbingAway


#27 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 999 messages
  • LocationPlestin-les-Grèves (22)

Posté 26 avril 2017 - 13:36

Qu'est-ce que t'as fait ? T'as cassé ton ordi ?  ::)



#28 LeChatNoir

LeChatNoir

    Brasseur de pâte à cacao

  • Artisan chocolatier
  • PipPipPipPipPipPipPip
  • 3 194 messages
  • LocationLyon

Posté 27 avril 2017 - 08:35

non, c'est mon lecteur de flux RSS qui m'affiche une partie de ton article mais quand je clique dessus, ça me renvoie sur http://carterconsult...losures-Part-2/and ca m'affiche l'erreur :(


Le Chat Noir, développeur à ses heures...
Application passion => ClimbingAway


#29 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 999 messages
  • LocationPlestin-les-Grèves (22)

Posté 27 avril 2017 - 09:41

Désolée, c'est moi qui est totalement nul en tous qui est web. J'ai corrigé les erreurs et tu peux, désormais, ajouter le bon lien.



#30 FKDEV

FKDEV

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 660 messages

Posté 30 avril 2017 - 10:31

J'ai l'impression qu'il manque la définition de l'enum TextFieldEventClosureType. Je crois comprendre que tu y stockes les closures, mais je ne vois pas la définition.

 

 

Puisque dans cette version tu utilises un enum pour encapsuler chaque closure, tu pourrais ajouter en plus dans chaque valeur d'enum une sorte de token qui te permettrait de retrouver l d'implémenter le "-=".



#31 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 999 messages
  • LocationPlestin-les-Grèves (22)

Posté 30 avril 2017 - 10:47

Elle se trouve dans le premier article https://joannamacdev...t-And-Closures/



#32 FKDEV

FKDEV

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 660 messages

Posté 30 avril 2017 - 12:50

Elle se trouve dans le premier article https://joannamacdev...t-And-Closures/

 

Ah ok, un petit lien ou un petit rappel peut-être que c'est défini dans le 1er article, ce serait sympa.

 

Sinon pour l'idée du dessus, le problème c'est que les enums sont des value-types donc cela ne va pas marcher. 



#33 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 999 messages
  • LocationPlestin-les-Grèves (22)

Posté 30 avril 2017 - 13:26

Ah ok, un petit lien ou un petit rappel peut-être que c'est défini dans le 1er article, ce serait sympa.

 

Juste pour toi, je l'ai fait  :-*

 

Sinon pour l'idée du dessus, le problème c'est que les enums sont des value-types donc cela ne va pas marcher. 

 

Et ça veut dire quoi ? En quelle situation crois-tu qu'elles ne marchent pas ?



#34 FKDEV

FKDEV

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 660 messages

Posté 30 avril 2017 - 14:14

Juste pour toi, je l'ai fait  :-*

 

 

Et ça veut dire quoi ? En quelle situation crois-tu qu'elles ne marchent pas ?

 

L'idée c'était de renvoyer à celui qui ajoute une closure un token pour qu'il puisse enlever la closure puisque que tu disais dans la première partie que le "-=" ne fonctionne pas.

Par exemple dans Realm, tu peux faire: 

let token = realm.addNotificiationBlock( { ... })

...

token.stop()

Ce qui ne marche pas, c'est de stocker ce token dans l'enum à côté de la closure.



#35 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 999 messages
  • LocationPlestin-les-Grèves (22)

Posté 30 avril 2017 - 14:22

L'idée c'était de renvoyer à celui qui ajoute une closure un token pour qu'il puisse enlever la closure puisque que tu disais dans la première partie que le "-=" ne fonctionne pas.

Par exemple dans Realm, tu peux faire: 

let token = realm.addNotificiationBlock( { ... })

...

token.stop()

Ce qui ne marche pas, c'est de stocker ce token dans l'enum à côté de la closure.

 

Mais, avec mon code, il n'est pas nécessaire de renvoyer un token pour stocker ailleurs. L'enum tient le closure là dedans et tu peux ajouter et retirer les enums d'un array parce que il sont Equatable.

 

Le premier article parle de l'idée de stocker les closures, mais j'ai dit là qu'il n'est pas possible de retirer les closures "nus" d'un array ; c'est pour cette raison que je parle, dans le deuxième article de la solution de les emballer dans les enums.



#36 FKDEV

FKDEV

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 660 messages

Posté 30 avril 2017 - 21:07

Ah ok j'ai raté ce passage. C'est ok pour l'exemple du delegate.

Mais je cherchais une solution pour l'exemple du pattern observer.



#37 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 999 messages
  • LocationPlestin-les-Grèves (22)

Posté 30 avril 2017 - 21:12

Tous que tu y trouves autour de Event et Closure est un exemple du pattern observer. Mais, à la place d'ajouter les objets "entiers" comme observers, avec les Events, on ajoute plusieurs closures comme observers.

 

Avec les observers "classiques" :

{
  public var subject: Person
  {
    didSet
    {
      subject.addObserver(self, forKeyPath: "age", options: .new, context: nil)
    }
  }
  
  public override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)
  {
    if keyPath == "age"
    {
      updateView()
    }
  }
}

Avec les observers 'closures" :

{
  public var subject: Person
  {
    didSet
    {
      subject.propertyChanged += .didChange
      {
        [unowned self] _, args in
        
        if args.propertyName == "age"
        {
          self.updateView()
        }
      }
    }
  }
}


#38 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 999 messages
  • LocationPlestin-les-Grèves (22)

Posté 01 mai 2017 - 12:40

OK, FKDev avait raison en disant que les enums ne marchent pas ; au moins en partie.

 

On peut bien supprimer les enums d'un array mais, en cherchant pour l'index d'un enum dans un liste d'enums du même case, on tombe sur le premier élément qui correspond, qui ne pourrait pas être le bon.

 

Je l'ai découvert en préparant pour mon prochain article, qui utilise les Events et les Closures ; j'ai déjà trouvé une solution et je suis en train de préparer l'article mais, cette fois, j'emploie un beta testeur avent de le publier  ::)


  • iLandes aime ceci

#39 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 999 messages
  • LocationPlestin-les-Grèves (22)

Posté 02 mai 2017 - 09:19

En suivant les conseils de FKDEV, j'ai ajouté du texte dans https://joannamacdev...t-And-Closures/

 

Cherchez "Danger, Will Robinson !"


  • iLandes aime ceci

#40 Jérémy

Jérémy

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 414 messages
  • LocationBordeaux

Posté 02 mai 2017 - 10:30

Très belle initiative Joanna !  :bravo!:

 

Je suis moi même en train d'en concevoir un de mon côté mais il est bien moins technique.  ;)


Twitter : @jrmguimberteau





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)