Хорошо, я программирую в объективе-C и использую Xcode. Я прочитал документацию на веб-сайте Apple и понимаю, что такое делегат, но когда я прихожу к той части, где он говорит о том, как фактически внедрять методы делегата в код, я просто запутался, особенно когда они говорят что-то вроде «теперь реализуют метод «. Может быть, это только я, но я не знаю точно, WHERE для реализации метода (будет ли файл AppDelegate.h/.m правильным местом в простой ситуации, когда у меня есть только класс ViewController и AppDelegate?). Я думаю, что лучший способ познакомиться с нами - увидеть очень простой пример.Пример простого делегата?
У меня есть код ниже, и мне было интересно, может ли кто-нибудь пройти и показать мне, как подключить делегата к ViewController, чтобы он показывал сумму? Извините, если код выглядит длинным, но это самый простой пример делегирования, о котором я мог думать. Ради аргументов и меньше кода для просмотра (что облегчает мне просмотр происходящего), скажем, сервер ServerClass * реализует сервер, а клиент ClientClass * реализует клиента. Оба они уже подключены друг к другу и ждут ввода своего номера. Я отложил то, что, по моему мнению, будет правильным, но я точно знаю, что он не является полным (что касается подключения делегата к серверу и клиенту). Одна вещь, которую я не знаю, где поставить, - это объявления протокола, поэтому, если кто-то может проделать эту простую проблему, это поможет мне многое узнать, как делегат внедряется в класс.
Кстати, я работаю с Peer Picker в новом GameKit iPhone SDK 3.0, если кто-то также хотел бы показать мне, что с ним связано. Например, я нахожусь в step 3 of the Apple guide for 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
Если в моем коде есть какая-то синтаксическая проблема, то это потому, что я не на своем Mac прямо сейчас, я должен был ввести его на ПК на базе Windows. –
Я прочитал комментарий о синтаксисе, но в случае, если вы этого не знали, я считаю, что вам не нужно (неатомное, сохранить) для целого числа. Я мог ошибаться, но я основываю это утверждение на коде, который я видел, и на том факте, что вы не сохраняете целые числа, насколько мне известно. Просто сделайте @property sum; –
Я считаю, что предпочтительным сочетанием свойств является @property (nonatomic, assign) для вещей, которые не являются указателями на объекты (целые числа, BOOL и т. Д.). – Tim