Simple Exemple De Délégué?
Ok, je suis à la programmation en objective-C et à l'aide de Xcode. J'ai lu attentivement la documentation sur le site web d'Apple et de comprendre ce que délégué, mais quand j'arrive à la partie où il parle de la façon de mettre en œuvre effectivement délégué méthodes dans le code, je viens de devenir confus, surtout quand ils disent quelque chose comme "maintenant mettre en œuvre le délégué de la méthode". Peut-être que c'est juste moi, mais je ne sais pas exactement OÙ en œuvre de la méthode (l'AppDelegate.h/.m du fichier de l'emplacement correct dans une situation simple où je n'ai que le ViewController et AppDelegate classe?). Je suppose que la meilleure façon pour moi d'apprendre est de voir un exemple très simple.
J'ai un peu de code ci-dessous et je me demandais si quelqu'un pouvait aller de travers et me montrer comment connecter le délégué à la ViewController de sorte qu'il affiche la somme? Désolé si le code est long, mais c'est le plus simple délégation exemple, je pense. Pour la clarté de l'exposé et avoir moins de code à regarder (le rendant plus facile pour moi de voir ce qui se passe), permet de dire ServerClass *serveur implémente un serveur et ClientClass *client implémente un client. Les deux sont déjà connectés les uns aux autres et sont en attente à l'entrée de leur nombre. Je l'ai mis vers le bas, je pense que ce serait correct, mais je sais pour sûr, il n'est pas complet (autant que de connecter le délégué à la fois serveur et client). Une chose que je ne sais pas où les mettre sont les déclarations au titre du protocole, donc si quelqu'un pourrait s'il vous plaît faire ce simple problème, il serait m'aider beaucoup comme apprendre un délégué est mis en œuvre dans une classe.
En passant, je suis en train de travailler avec les Pairs Sélecteur dans le nouveau GameKit du SDK de l'iPhone 3.0 si quelqu'un voudrais aussi me montrer ce qu'il se connecte à ce. Pour exemple, je suis à l'étape 3 de la Pomme guide pour les Pairs Sélecteur. Maintenant, je ne sais pas où l'étape 5 va dans mon projet. Merci à tous ceux qui peuvent m'aider à comprendre ce délégué la mise en œuvre...vous avez tous été très bien jusqu'à présent!
ExampleAppDelegate.h
#import <UIKit/UIKit.h>
@class ExampleAppViewController;
@interface ExampleAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
ExampleAppViewController *viewController;
int sum;
}
@property (nonatomic, retain) sum;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet ExampleAppViewController *viewController;
-(void) addNum:(int)num;
@end
ExampleAppDelegate.m
#import "ExampleAppDelegate.h"
#import "ExampleAppViewController.h"
@implementation ExampleAppDelegate
@synthesize window;
@synthesize viewController;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
application.idleTimerDisabled = YES;
//Override point for customization after app launch
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
- (void)dealloc {
[viewController release];
[window release];
[super dealloc];
}
-(void)addNum:(int)num {
sum += num;
}
@end
ExampleAppViewController.h
#import <UIKit/UIKit.h>
#import <GameKit/GameKit.h>
@interface ExampleAppViewcontroller : NSObject {
IBOutlet UILabel *sumField; //will display the total sum, one number entered //by the server and one entered by the client, on both iPhones after calculation
int sum; //the total sum after addition;
ServerClass *server; //some server
ClientClass *client; //some client
int num; //the number to add to sum
}
@property(nonatomic, assign) sum;
@property(nonatomic, retain) num;
-(void) displaySum;
@end
ExampleAppViewController.m
#import "ExampleAppViewcontroller.h"
@implementation ExampleAppViewController
@synthesize sum;
@synthesize num;
-(void) displaySum {
[sumfield setText: @"%i", sum];
}
@end
J'ai lu le commentaire à propos de la syntaxe, mais dans le cas où vous ne le saviez pas, je crois que vous n'avez pas besoin (nonatomic, retain) pour un entier. Je peux me tromper bien, j'ai la base de cette déclaration de code que j'ai vu et le fait que vous n'avez pas conserver entiers, autant que je sache. Il suffit de ne @property somme;
Je crois que le préféré de la propriété mix @property(nonatomic,céder) pour des choses qui ne sont pas des pointeurs vers des objets (entiers, Booléens, etc.)
OriginalL'auteur Josh Bradley | 2009-06-27
Vous devez vous connecter pour publier un commentaire.
Je ne vais pas entrer dans une analyse détaillée du code que vous avez posté est le plus utile de la réponse que vous pourriez obtenir est certain sens dans la mesure où les principes généraux qui transcendent un code spécifique de l'échantillon. Voici les principes généraux...
[object setDelegate:self];
ou de réglage deobject.delegate = self;
dans votre code.-respondsToSelector:
) et les appels de méthode si elle n'. Le délégué a ensuite le contrôle à faire tout ce qu'il faut, pour répondre avant de rendre le contrôle à l'appelant.Dans l'exemple que vous travaillez à travers, notez que GKPeerPickerController possède une propriété nommée
delegate
qui accepte un objet de typeid<GKPeerPickerControllerDelegate>
. Cela signifie uneid
(aucune sous-classe NSObject) qui implémente les méthodes dans leGKPeerPickerControllerDelegate
protocole. GKPeerPickerControllerDelegate à son tour, définit un certain nombre de délégué méthodes et décrit quand ils seront appelés. Si vous mettez en œuvre une ou plusieurs de ces méthodes (la documentation dit que tous sont facultatifs, mais les deux sont attendus) et de vous inscrire en tant que délégué, ces méthodes seront appelées. (Notez que vous n'avez pas besoin de déclarer un prototype de méthode dans votre .h fichier, il suffit d'importer l'en-tête de protocole et de mettre en œuvre la méthode dans votre .m fichier.OriginalL'auteur Quinn Taylor
Je suis en train d'apprendre ObjC et de développement pour iPhone. Je ne voudrais pas arriver si loin jusqu'à dire que je comprends les délégués et leur utilisation parfaitement. Votre Première Application iPhone, trouvé sur le portail des développeurs sur le site d'Apple, les promenades en détail un exemple très simple qui rend l'utilisation de la zone de texte du délégué de remplacer une méthode pour rendre le clavier disparaît lors de l'édition sur le TextField est fait. Par exemple, si je peux coller pertinents extraits à partir de là:
Ici,
textFieldShouldReturn
est une méthode qui fait partie de laUITextFieldDelegate
protocole. Autant que je l'ai compris, ce qui est important, c'est que, quel que soit la classe que vous mettre en œuvre le délégué méthodes, que de la classe doit suivre ce particulier délégué du protocole (par le fait d'avoir un nom de protocole joint en angle entre parenthèses à côté du nom de la classe dont hérite).Comme je le comprends, si une classe suit un délégué du protocole, il peut remplacer toutes les méthodes qui sont définies par le délégué du protocole.
Lorsque vous adoptez un protocole (si c'est pour un délégué ou quoi que ce soit d'autre), vous n'avez pas "hériter" toutes les variables ou les implémentations de méthode. (Qui ne se produit que lorsque vous étendez une classe parent, comme UIViewController ou de NSObject.) Un protocole est comme une interface Java: l'adoption d'un protocole, c'est une promesse que vous allez mettre en œuvre (au moins les méthodes qu'il déclare. Les protocoles sont utilisés pour établir des attentes formelles de ce que l'appelant peut demander des instances de votre objet pour le faire, et par défaut, le compilateur va vous avertir en cas de non implémentée protocole requis méthodes.
OriginalL'auteur ayaz