Archives du tag: objective-C

Développement

Le Singleton facile (XCode 3 et 4)

Le singleton est très utilisé en Objective-C afin d’accéder à un objet partagé.
Seulement, cela peut-être fastidieux à intégrer.

Pour éviter le code à rallonge, voici un fichier qui pourra vous être utile.

KSSingleton.h

Son usage est relativement simple.

MySingleton.h

#import    #import "KSSingleton.h"   @interface MySingleton : NSObject {         NSInteger integerValue; }   @property (assign) NSInteger integerValue;   KS_SINGLETON_INTERFACE(MySingleton)   @end

MySingleton.m

#import "MySingleton.h"   @interface MySingleton (hidden)   - (void)initialization;   @end   @implementation MySingleton (hidden)   - (void)initialization {         integerValue = 12; }   @end   @implementation MySingleton   @synthesize integerValue;   KS_SINGLETON_IMPLEMENTATION(MySingleton)   @end

Notez que l’implémentation de - (void)initialization; est facultative. Elle peut cependant être utile à l’initialisation du singleton.

Ensuite, l’utilisation dans le code se fait ainsi :

MySingleton *s = [MySingleton sharedSingleton];

L’appel au singleton se fait toujours via [MaClasse sharedMaClasse].

Vous pouvez utiliser cette fonctionnalité à titre personnel et/ou professionnel, du moment que vous conservez son en-tête intacte.

Vous pouvez également télécharger le Projet d’exemple ici.

Le modèle de fichier (XCode 3)

Si vraiment vous souhaitez gagner du temps, utilisez directement notre modèle de fichier.

La procédure d’installation est simple.

Placez vous, dans votre répertoire « Bibliothèque » (Library). Allez donc à l’emplacement /Users/utilisateur/Library/Application Support/Developer/Shared/XCode.

S’il n’existe pas, créez le répertoire File Templates. Placez vous dans ce répertoire. Créez le répertoire Kaeli Soft.

Téléchargez l’archive Kaeli Soft. Décompressez son contenu dans Kaeli Soft.

Relancez XCode.

Pour l’utiliser : File -> New File… puis sélectionnez, dans User Templates, Kaeli Soft.

Vous aurez alors la possibilité de créer un Singleton. Appuyez sur Next. Définissez le nom du fichier (qui sera le nom de la classe) et appuyez sur Finish.

Votre singleton est prêt !

Le modèle de fichier (XCode 4)

Si vraiment vous souhaitez gagner du temps, utilisez directement notre modèle de fichier.

La procédure d’installation est simple.

Placez vous, dans votre répertoire « Bibliothèque » (Library). Allez donc à l’emplacement /Users/utilisateur/Library/Developer/XCode.

S’il n’existe pas, créez le répertoire File Templates. Placez vous dans ce répertoire.

Téléchargez l’archive Kaeli Soft. Décompressez son contenu dans File Templates : on doit avoir un nouveau répertoire Kaeli Soft contenant Objective-C Singleton.xctemplate.

Relancez XCode.

Pour l’utiliser : File -> New File… puis sélectionnez, dans iOS ou Mac OS XKaeli Soft.

Vous aurez alors la possibilité de créer un Singleton. Appuyez sur Next. Définissez le nom du fichier (qui sera le nom de la classe) et appuyez sur Finish.

Votre singleton est prêt !

 

Share
Développement iPhone

Utilisation de la sortie TV de l’iPhone

Dans ce bref article, vous allez découvrir comment utiliser la sortie TV de l’iPhone.

Développement

Avertissement : Les API utilisées dans le code suivant sont privées. Ce code ne pourra donc pas être validé sur l’AppStore.

Tout d’abord, pensez à utiliser le framework MediaPlayer.

Ensuite, il suffit d’utiliser MPTVOutWindow et MPVideoView afin d’afficher le contenu sur la sortie TV. Il y a donc 2 fenêtres à gérer : une pour la TV et une pour l’iPhone.

Voici un exemple de code.

L’interface :

#import #import    @interface MPTVOutWindow : UIWindow - (id)initWithVideoView:(id)view; @end     @interface MPVideoView : UIView - (id)initWithFrame:(struct CGRect)rect; @end     @interface TVOutTestAppDelegate : NSObject  {     UIWindow *window;   	IBOutlet UIView *iphoneView; }   @property (nonatomic, retain) IBOutlet UIWindow *window;   @end

L’implémentation :

#import "TVOutTestAppDelegate.h"   @implementation MPVideoView (extended) - (void) addSubview: (UIView *)view {     [super addSubview:view]; } @end   @implementation TVOutTestAppDelegate   @synthesize window;   - (void)applicationDidFinishLaunching:(UIApplication *)application { 	// TV Out 	MPVideoView *videoView = [[MPVideoView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];   	UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(40.0f, 40.0f, 250.0f, 250.0f)]; 	[backgroundView setBackgroundColor:[UIColor yellowColor]];   	UILabel *videoLabel = [[UILabel alloc] initWithFrame:CGRectMake(10.0f,10.0f, 150.0f, 20.0f)]; 	[videoLabel setText:@"TV Out"];   	[backgroundView addSubview:videoLabel]; 	[videoLabel release];   	[videoView addSubview:backgroundView]; 	[backgroundView release];   	MPTVOutWindow *tvoutWindow = [[MPTVOutWindow alloc] initWithVideoView:videoView]; 	[videoView release];   	[tvoutWindow makeKeyAndVisible];   	// iPhone 	[window addSubview:iphoneView];     [window makeKeyAndVisible]; }   - (void)dealloc {     [window release];     [super dealloc]; }   @end

Cet exemple a été testé sur un iPod Touch également.

Pourquoi Apple ne l’autorise-t-elle pas ?

Les performances de la sortie TV sont malheureusement trop limitées pour être exploitable pleinement.

Par mesure de sécurité et par gage de qualité, Apple préfère donc restreindre son usage à la seule application iPod.

Intérêt à l’heure actuelle

La future tablette tactile d’Apple fonctionnerait, selon les rumeurs, sur iPhone OS.

La sortie TV est donc un bon moyen de tester une application en multiples résolutions.

Une ouverture potentielle…

Peut-être serait-il intéressant de permettre l’utilisation de la sortie TV dans un cadre spécifique, comme par exemple pour visionner la TV (SFR, Orange) ou les vidéos YouTube.

Cette décision n’appartient aujourd’hui qu’à Apple, qui reste maître du jeu. Un jour, peut-être…

Share