Vidéo: Comment utiliser les stratégies d'Apple pour booster votre développement ? 2025
Les modèles de conception sont des moyens formels de documenter les solutions aux problèmes de conception; L'un des motifs les plus courants utilisés dans la classe Symbol est le motif Singleton. Ce modèle est utilisé dans le développement d'applications iOS et est présenté ci-dessous dans l'application Tic-Tac-Toe.
Le pattern Singleton est utilisé dans la classe Symbol, notez le format personnalisé de ce pattern dans l'application Tic-Tac-Toe:
-
Plutôt que l'instance retournée par le pattern Singleton, trois instances (une pour chaque les symboles X, O et vierges) sont autorisés dans la classe Symbol. Ces instances sont gérées par les trois méthodes static ou class. Une de ces méthodes est montrée ici:
+ (TTTSymbol *) SymbolXCreate {@synchronized ([classe TTTSymbol]) {if (SymbolX == nul) {SymbolX = [[TTTSymbol alloc] init]; SymbolX-> value = MARKX;} return SymbolX;}}
-
La technique utilisée dans le pattern Singleton pour créer une seule instance est utilisée dans la méthode getBitmapForSymbol pour obtenir les images des symboles X, O et vierges: > - (UIImage *) getBitmapForSymbol {@synchronized ([classe TTTSymbol]) {if (! BitMapsInitialized) {NSString * imagePath = [[NSBundle mainBundle] pathForResource: @ "Images. Bundle / x" deType: @ "png"]; imageX = [[UIImage alloc] initWithContentsOfFile: chemin_image]; imagePath = [[NSBundle mainBundle] pathForResource: @ "Images. bundle / o" deType: @ "png"]; imageO = [[UIImage alloc] initWithContentsOfFile: imagePath]; imagePath = [[NSBundle mainBundle] pathForResource: @ "Images. bundle / blank" deType: @ "png"]; imageBlank = [[UIImage alloc] initWithContentsOfFile: imagePath]; bitMapsInitialized = true;}} UIImage * imageSelected = imageBlank; si (self == [TTTSymbol SymbolXCreate]) imageSelected = imageX; sinon si (self == [TTTSymbol SymbolOCreate]) imageSelected = imageO; return imageSelected;}
Comme les applications iOS peuvent être multithread, Singleton est modifié pour gérer plusieurs threads en utilisant l'annotation @synchronized.
-
