わかりました、私は Objective-C でプログラミングし、Xcode を使用しています。私はAppleのWebサイトのドキュメントを読み、デリゲートとは何かを理解しましたが、実際にデリゲートメソッドをコードに実装する方法について話している部分になると、特に「デリゲートのメソッドを実装するようになりました」方法。" 私だけかもしれませんが、メソッドを実装する場所が正確にはわかりません (ViewController と AppDelegate クラスしかない単純な状況では、AppDelegate.h/.m ファイルが正しい場所でしょうか?)。私が学ぶための最良の方法は、非常に単純な例を見ることだと思います。
以下にいくつかのコードがありますが、誰かがデリゲートを ViewController に接続して合計を表示する方法を教えてくれるかどうか疑問に思っていましたか? コードが長く見える場合は申し訳ありませんが、これは私が考えることができる最も単純な委任の例です。議論のために、そして見るコードを少なくするために (何が起こっているかを簡単に確認できるようにするため)、ServerClass *server がサーバーを実装し、ClientClass *client がクライアントを実装するとします。どちらもすでに相互に接続されており、番号の入力を待っています。私は正しいと思うことを書き留めましたが、それが完全ではないことは確かです(デリゲートをサーバーとクライアントの両方に接続する限り)。どこに置くべきかわからないのは、プロトコル宣言です。誰かがこの簡単な問題をやってくれたら、
ちなみに、私は iPhone SDK 3.0 の新しい GameKit で Peer Picker を使って作業しています。たとえば、私はPeer Picker の Apple ガイドのステップ 3 にいます。ここで、ステップ 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