Простой пример делегата?
Хорошо, я программирую на target-C и использую Xcode. Я прочитал документацию на веб-сайте Apple и понимаю, что такое делегаты, но когда я подхожу к той части, где говорится о том, как на самом деле реализовать методы делегата в коде, я просто запутываюсь, особенно когда они говорят что-то вроде & quot теперь реализуем метод делегата. Может быть, это только я, но я точно не знаю, ГДЕ реализовать метод (будет ли файл AppDelegate.h / .m правильным местом в простой ситуации, когда у меня есть только классы ViewController и AppDelegate?). Я полагаю, что лучший способ для меня - это увидеть очень простой пример.
У меня есть некоторый код ниже, и мне было интересно, может ли кто-нибудь пройти и показать мне, как подключить делегат к ViewController, чтобы он отображал сумму? Извините, если код выглядит длинным, но это самый простой пример делегирования, который я мог придумать. Для аргументации и наличия меньшего количества кода для просмотра (чтобы мне было легче видеть, что происходит), скажем, сервер ServerClass * реализует сервер, а клиент ClientClass * реализует клиент. Оба уже связаны друг с другом и ждут, чтобы ввести их номер. Я записал то, что, по моему мнению, было бы правильным, но я точно знаю, что оно не завершено (что касается подключения делегата к серверу и клиенту). Одна вещь, которую я не знаю, куда поместить, - это объявления протоколов, поэтому, если кто-то мог бы решить эту простую проблему, это очень помогло бы мне, если бы я узнал, как делегат реализован в классе.
Кстати, я работаю с Peer Picker в новом GameKit iPhone SDK 3.0, если кто-то также хотел бы показать мне, что с чем связано. Например, я нахожусь вшаг 3 из руководства Apple для Peer Picker, Теперь я не знаю, куда пойдет шаг 5 в моем проекте. Спасибо всем, кто может помочь мне понять реализацию этого делегата ... вы все были великолепны!
ExampleAppDelegate.h
<code>#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 </code>
ExampleAppDelegate.m
<code>#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 </code>
ExampleAppViewController.h
<code>#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 </code>
ExampleAppViewController.m
<code>#import "ExampleAppViewcontroller.h" @implementation ExampleAppViewController @synthesize sum; @synthesize num; -(void) displaySum { [sumfield setText: @"%i", sum]; } @end </code>