Хорошо, я программирую на target-C и использую Xcode. Я прочитал документацию на веб-сайте Apple и понимаю, что такое делегат, но когда я подхожу к той части, где говорится о том, как на самом деле реализовать методы делегата в коде, я просто запутываюсь, особенно когда они говорят что-то вроде «теперь реализуйте делегат». метод «. Может быть, это только я, но я точно не знаю, ГДЕ реализовать метод (будет ли файл AppDelegate.h / .m правильным местом в простой ситуации, когда у меня есть только классы ViewController и AppDelegate?). Я полагаю, что лучший способ для меня - это увидеть очень простой пример.
У меня есть некоторый код ниже, и мне было интересно, может ли кто-нибудь пройти и показать мне, как подключить делегат к ViewController, чтобы он отображал сумму? Извините, если код выглядит длинным, но это самый простой пример делегирования, который я мог придумать. Для аргументации и наличия меньшего количества кода для просмотра (чтобы мне было легче видеть, что происходит), скажем, сервер ServerClass * реализует сервер, а клиент ClientClass * реализует клиент. Оба уже связаны друг с другом и ждут, чтобы ввести их номер. Я записал то, что, по моему мнению, было бы правильно, но я точно знаю, что оно не завершено (что касается подключения делегата к серверу и клиенту). Одна вещь, которую я не знаю, куда поместить, - это объявления протоколов, поэтому, если кто-то мог бы решить эту простую проблему, это мне очень помогло бы, если бы я узнал, как делегат реализован в классе.
Кстати, я работаю с Peer Picker в новом GameKit iPhone SDK 3.0, если кто-то также хотел бы показать мне, что и с чем связано. Например, я на шаге 3 руководства Apple для Peer Picker . Теперь, я не знаю, где шаг 5 идет в моем проекте. Спасибо всем, кто может помочь мне понять реализацию этого делегата ... вы все были великолепны!
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