Enviar pesquisa
Carregar
Ns operationqueue
•
1 gostou
•
1,011 visualizações
CocoaHeads France
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 20
Baixar agora
Baixar para ler offline
Recomendados
Présentation iBeacon (cocoaheads toulouse)
Présentation iBeacon (cocoaheads toulouse)
Arnaud Boudou
CocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & Android
CocoaHeadsRNS
Transition de NIBs/XIBs vers Storyboards
Transition de NIBs/XIBs vers Storyboards
CocoaHeads France
CocoaHeads Rennes #6
CocoaHeads Rennes #6
CocoaHeadsRNS
Presentation clean architecture
Presentation clean architecture
Thomas LOMBARD
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter Meuel
CocoaHeads France
Introduction to WebRTC on iOS
Introduction to WebRTC on iOS
CocoaHeads France
Présentation SoLocal
Présentation SoLocal
CocoaHeads France
Recomendados
Présentation iBeacon (cocoaheads toulouse)
Présentation iBeacon (cocoaheads toulouse)
Arnaud Boudou
CocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & Android
CocoaHeadsRNS
Transition de NIBs/XIBs vers Storyboards
Transition de NIBs/XIBs vers Storyboards
CocoaHeads France
CocoaHeads Rennes #6
CocoaHeads Rennes #6
CocoaHeadsRNS
Presentation clean architecture
Presentation clean architecture
Thomas LOMBARD
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter Meuel
CocoaHeads France
Introduction to WebRTC on iOS
Introduction to WebRTC on iOS
CocoaHeads France
Présentation SoLocal
Présentation SoLocal
CocoaHeads France
La sécurité sur iOS par Arnaud de Bock
La sécurité sur iOS par Arnaud de Bock
Nicolas Lourenço
BlaBlaCar - Going Native !
BlaBlaCar - Going Native !
Erwann Robin
Tap publisher par Frédéric Aloé
Tap publisher par Frédéric Aloé
CocoaHeads France
L'intégration continue avec Bitrise
L'intégration continue avec Bitrise
CocoaHeads France
How javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible tool
CocoaHeads France
Test flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebia
CocoaHeads France
Lab devtalk
Lab devtalk
s_wool
Présentation retour d'experience sur l'application MyLittleParis
Présentation retour d'experience sur l'application MyLittleParis
CocoaHeads France
CocoaHeads Rennes #7 : Intégration continue pour les nuls
CocoaHeads Rennes #7 : Intégration continue pour les nuls
CocoaHeadsRNS
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads France
L’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & Android
Chris Saez
Plugins Xcode
Plugins Xcode
CocoaHeads France
Systeme embarque
Systeme embarque
Mohammed TIGHREMT
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique
Microsoft
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'
Pierre-jean Texier
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
Microsoft
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
Cellenza
Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5
Microsoft
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
OSInet
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
TelecomValley
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
Luc Juggery
A la queue leu leu
A la queue leu leu
nautilebleu
Mais conteúdo relacionado
Mais procurados
La sécurité sur iOS par Arnaud de Bock
La sécurité sur iOS par Arnaud de Bock
Nicolas Lourenço
BlaBlaCar - Going Native !
BlaBlaCar - Going Native !
Erwann Robin
Tap publisher par Frédéric Aloé
Tap publisher par Frédéric Aloé
CocoaHeads France
L'intégration continue avec Bitrise
L'intégration continue avec Bitrise
CocoaHeads France
How javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible tool
CocoaHeads France
Test flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebia
CocoaHeads France
Lab devtalk
Lab devtalk
s_wool
Présentation retour d'experience sur l'application MyLittleParis
Présentation retour d'experience sur l'application MyLittleParis
CocoaHeads France
CocoaHeads Rennes #7 : Intégration continue pour les nuls
CocoaHeads Rennes #7 : Intégration continue pour les nuls
CocoaHeadsRNS
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads France
L’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & Android
Chris Saez
Plugins Xcode
Plugins Xcode
CocoaHeads France
Mais procurados
(12)
La sécurité sur iOS par Arnaud de Bock
La sécurité sur iOS par Arnaud de Bock
BlaBlaCar - Going Native !
BlaBlaCar - Going Native !
Tap publisher par Frédéric Aloé
Tap publisher par Frédéric Aloé
L'intégration continue avec Bitrise
L'intégration continue avec Bitrise
How javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible tool
Test flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebia
Lab devtalk
Lab devtalk
Présentation retour d'experience sur l'application MyLittleParis
Présentation retour d'experience sur l'application MyLittleParis
CocoaHeads Rennes #7 : Intégration continue pour les nuls
CocoaHeads Rennes #7 : Intégration continue pour les nuls
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
L’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & Android
Plugins Xcode
Plugins Xcode
Semelhante a Ns operationqueue
Systeme embarque
Systeme embarque
Mohammed TIGHREMT
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique
Microsoft
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'
Pierre-jean Texier
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
Microsoft
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
Cellenza
Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5
Microsoft
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
OSInet
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
TelecomValley
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
Luc Juggery
A la queue leu leu
A la queue leu leu
nautilebleu
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Smile I.T is open
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
boulonvert
travaux-pratiques-m103-v1-0-2022-630dd67234da9.pptx
travaux-pratiques-m103-v1-0-2022-630dd67234da9.pptx
ssuser1d2a6b
Osis18_Cloud : Virtualisation efficace d’architectures NUMA
Osis18_Cloud : Virtualisation efficace d’architectures NUMA
Pôle Systematic Paris-Region
IBM Technology Day 2013 IBM Smarter Computing Y. de Visme Salle Rome
IBM Technology Day 2013 IBM Smarter Computing Y. de Visme Salle Rome
IBM Switzerland
L'optimisation énergétique des datacenter
L'optimisation énergétique des datacenter
ekito
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
Marc Bojoly
Solutions temps réel sous linux
Solutions temps réel sous linux
embedded-linux-bdx
Microservices IRL - Devoxx-fr 2016
Microservices IRL - Devoxx-fr 2016
Stephan Lagraulet
Comment choisir le bon système d'exploitation pour un système embarqué.pdf
Comment choisir le bon système d'exploitation pour un système embarqué.pdf
AitAddiHajar
Semelhante a Ns operationqueue
(20)
Systeme embarque
Systeme embarque
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
A la queue leu leu
A la queue leu leu
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
travaux-pratiques-m103-v1-0-2022-630dd67234da9.pptx
travaux-pratiques-m103-v1-0-2022-630dd67234da9.pptx
Osis18_Cloud : Virtualisation efficace d’architectures NUMA
Osis18_Cloud : Virtualisation efficace d’architectures NUMA
IBM Technology Day 2013 IBM Smarter Computing Y. de Visme Salle Rome
IBM Technology Day 2013 IBM Smarter Computing Y. de Visme Salle Rome
L'optimisation énergétique des datacenter
L'optimisation énergétique des datacenter
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
Solutions temps réel sous linux
Solutions temps réel sous linux
Microservices IRL - Devoxx-fr 2016
Microservices IRL - Devoxx-fr 2016
Comment choisir le bon système d'exploitation pour un système embarqué.pdf
Comment choisir le bon système d'exploitation pour un système embarqué.pdf
Mais de CocoaHeads France
Mutation testing for a safer Future
Mutation testing for a safer Future
CocoaHeads France
iOS App Group for Debugging
iOS App Group for Debugging
CocoaHeads France
Asynchronous swift
Asynchronous swift
CocoaHeads France
Visual accessibility in iOS11
Visual accessibility in iOS11
CocoaHeads France
My script - One year of CocoaHeads
My script - One year of CocoaHeads
CocoaHeads France
Ui testing dealing with push notifications
Ui testing dealing with push notifications
CocoaHeads France
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
CocoaHeads France
Super combinators
Super combinators
CocoaHeads France
Design like a developer
Design like a developer
CocoaHeads France
Handle the error
Handle the error
CocoaHeads France
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
CocoaHeads France
IoT Best practices
IoT Best practices
CocoaHeads France
SwiftyGPIO
SwiftyGPIO
CocoaHeads France
Présentation de HomeKit
Présentation de HomeKit
CocoaHeads France
Programme MFI retour d'expérience
Programme MFI retour d'expérience
CocoaHeads France
How to communicate with Smart things?
How to communicate with Smart things?
CocoaHeads France
Build a lego app with CocoaPods
Build a lego app with CocoaPods
CocoaHeads France
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
CocoaHeads France
Project Entourage
Project Entourage
CocoaHeads France
What's new in iOS9
What's new in iOS9
CocoaHeads France
Mais de CocoaHeads France
(20)
Mutation testing for a safer Future
Mutation testing for a safer Future
iOS App Group for Debugging
iOS App Group for Debugging
Asynchronous swift
Asynchronous swift
Visual accessibility in iOS11
Visual accessibility in iOS11
My script - One year of CocoaHeads
My script - One year of CocoaHeads
Ui testing dealing with push notifications
Ui testing dealing with push notifications
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
Super combinators
Super combinators
Design like a developer
Design like a developer
Handle the error
Handle the error
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
IoT Best practices
IoT Best practices
SwiftyGPIO
SwiftyGPIO
Présentation de HomeKit
Présentation de HomeKit
Programme MFI retour d'expérience
Programme MFI retour d'expérience
How to communicate with Smart things?
How to communicate with Smart things?
Build a lego app with CocoaPods
Build a lego app with CocoaPods
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
Project Entourage
Project Entourage
What's new in iOS9
What's new in iOS9
Ns operationqueue
1.
Vincent Daubry
• CTO Youboox • @vdaubry • iOS et RoR
2.
A quoi ça
sert ? • Gérer le multithreading, ne pas bloquer le main thread • Cas d'usage numéro 1 : appels réseaux • Article de Jeff Lamarche de 2010 qui déconseille l’utilisation de thread pour lancer des appels réseaux synchrone • « This is Apple's polite way of saying "don't use threads for networking, you idiot". » * h;p://iphonedevelopment.blogspot.fr/2010/05/downloading-‐images-‐for-‐table-‐without.html 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 2
3.
A quoi ça
sert ? Les frameworks « modernes » utilise des operations pour faire les appels réseaux. On utilise donc des appels assynchrone pour lancer… des [NSURLConnection sendAsynchronousRequest] ? 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 3
4.
18/2/13
Copyright © 2012 Youboox.fr | Design by Youboox 4
5.
A quoi ça
sert ? • Il y a 2 raisons : La performance : « Event-driven code is more complex than code using blocking threads, but it delivers the highest network performance. » Mais surtout : – Une queue permet un contrôle très fin sur les appels : priorité, dépendances, appels concurrents, etc 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 5
6.
Un peu de
théorie • Lancer des thread à la main est facile • Mais : – Ce n’est pas scalable (gestion du CPU et de la mémoire) – Pas adapté aux CPU multicoeurs • A réserver à des cas très particulier d’appli temps réels… • En conlusion : Please don’t do it. 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 6
7.
Un peu de
théorie • La bonne façon de faire est d’utiliser les queue fournit par le SDK : dispatch queue et operation queue • Dispatch queue (GCD) : approche bas niveau • Operation queue : approche haut niveau • Les operations sont des simple objets • On peut faire pleins de choses sympathiques avec ça 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 7
8.
NSOperation • NSOperation :
moyen recommandé de gérer les appels en tache de fond • Une operation est une sous-classe de NSOperation 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 8
9.
NSOperation • Une operation
a une methode main 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 9
10.
NSOperationQueue • Une job
queue : NSOperationQueue • Un simple array d’operation • Par défaut les operations sont exécutées dans l’ordre dès qu’on les ajoute à la queue 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 10
11.
Dans la vrai
vie : les blocks C’est tout ;) 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 11
12.
Le sucre • La
queue offre un contrôle très fin sur les operations : – Choisir le nombre d'operations simultanées – Priorité d’exécution des jobs – Mettre en pause le démarrage de nouvelles operations • Une operation est KVO compliant : – Etat du job (isCanceled , isConcurrent, isFinished) – Completion block • Une operation peut avoir une liste d’operations dont elle dépend 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 12
13.
AFNetworking • Chaque appel
est une operation • Une queue pour lancer les operations • Chaque operation ouvre une connection assynchrone • Operations et blocks = callbacks 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 13
14.
AFNetworking •
Exemple : enqueueBatchOfHTTPRequestOperationsWithRequests • Pour chaque requête il y a un completion block (suivre l’avancement) • Chaque requête est ajouté comme une dépendance du batch 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 14
15.
Attention au MainThread… •
Penser à lancer vos opérations de mise à jour de l’interface sur le main thread ! 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 15
16.
Attention à la
mémoire… • Chaque opération retient les objets qui sont alloués durant son exécution • Quand on définit des dépendances entre opérations la mémoire n’est libéré que lorsque toutes les opérations soient terminées 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 16
17.
MKNetworkKit • Et si
votre appli fait des appels long en tache de fond ? (ex: téléchargement) • 3G = 2 connexions concurrentes max … (edge 1 connection) • La queue est placée dans un singleton, toute l'appli a accès les appels réseau • Permet de faire varier le nombre d'appels concurrent en fonction du reseau • Permet d'affecter un niveau de priorité aux appels 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 17
18.
MKNetworkKit • La queue
est en mémoire • On ne peut pas sérialiser un block (?) • Mais on peut serialiser une opération! • Pourquoi faire ? – Exemple : Quand on perd le réseau les operations sont sauvés et executés quand on revient online 18/2/13 Copyright © 2012 Youboox.fr | Design by Youboox 18
19.
MKNetworkKit 18/2/13
Copyright © 2012 Youboox.fr | Design by Youboox 19
20.
MKNetworkKit 18/2/13
Copyright © 2012 Youboox.fr | Design by Youboox 20
Baixar agora