Protocolプロトコルボタンクリック
2367 ワード
要求:プロトコルシミュレーションでボタンのクリックイベントを実現する
Button.h
Button.m:
MyListener.h:
MyListener.m:
ButtonListener.h:
ButtonListener.m:
Main:
2013-08-02 14:47:26.32 Protocol[656:303]リスナーはonClickを実現していない:方法
2013-08-02 14:47:26.33 Protocol[656:303]現在のボタンは
2013-08-02 14:47:26.34 Protocol[656:303]ボタンを傍受しました:クリックしました
Button.h
#import <Foundation/Foundation.h> @class Button; //<> @protocol ButtonDelegate <NSObject> -(void)onClick:(Button *)btn; @end @interface Button : NSObject //delegate <> @property(nonatomic,retain) id<ButtonDelegate> delegate; -(void)click; @end
Button.m:
#import "Button.h" @implementation Button -(void)click{ // delegate if([_delegate respondsToSelector:@selector(onClick:)]) { // , [_delegate onClick:self]; } else { NSLog(@" onClick: "); } } -(void)dealloc{ [_delegate release]; [super dealloc]; } @end
MyListener.h:
#import <Foundation/Foundation.h> #import "Button.h" @interface MyListener : NSObject<ButtonDelegate> @end
MyListener.m:
#import "MyListener.h" #import "Button.h" @implementation MyListener -(void)onClick:(Button *)btn{ NSLog(@" :%@ ",btn); } @end
ButtonListener.h:
#import <Foundation/Foundation.h> #import "Button.h" // , <> @interface ButtonListener : NSObject<ButtonDelegate> @end
ButtonListener.m:
#import "ButtonListener.h" @implementation ButtonListener -(void)onClick{ NSLog(@" "); } @end
Main:
#import <Foundation/Foundation.h> #import "Button.h" #import "ButtonListener.h" #import "MyListener.h" int main(int argc, const char * argv[]) { @autoreleasepool { // Button *btn=[[[Button alloc] init] autorelease]; // ButtonListener *btnListener=[[[ButtonListener alloc] init] autorelease]; MyListener * mylisten=[[[MyListener alloc] init] autorelease]; // btn.delegate=btnListener; [btn click]; NSLog(@" %@",btn); btn.delegate=mylisten; [btn click]; } return 0; }
結果:2013-08-02 14:47:26.32 Protocol[656:303]リスナーはonClickを実現していない:方法
2013-08-02 14:47:26.33 Protocol[656:303]現在のボタンは
2013-08-02 14:47:26.34 Protocol[656:303]ボタンを傍受しました: