object-cの@protocolの理解について
1684 ワード
Javaの観点から理解する
@protocolはjavaのインタフェース定義に相当し、使い方も同じです.
以下、試験例
ここでprotocolを定義し、クラスによって
ここでは,スレッドによる非同期コールバックにより,プログラムがより直感的になる.
protocolを使用する場所でこのprotocolを実現し、ポインタを転送する必要があります.
インターネットのちょっとした事 www.yidin.net
@protocolはjavaのインタフェース定義に相当し、使い方も同じです.
以下、試験例
@protocol mytestClass <NSObject>
- (void) callback:(int) num;
@end
@interface DiscoveryController : UIViewController<mytestClass>{
UIImageView *imageView;
}
-(UIImage *) getImageFromURL:(NSString *)fileURL;
@end
ここでprotocolを定義し、クラスによって
DiscoveryController
@interface MyCallBack : NSObject
{
id<mytestClass> deleage;
}
@property(nonatomic,retain) id<mytestClass> deleage;
- (void)setRun;
@end
MyCallBack
deleage 。
//
// MyCallBack.m
// ACMobile
//
// Created by mr.liang on 15/1/22.
// Copyright (c) 2015 mr.liang. All rights reserved.
//
#import "MyCallBack.h"
@implementation MyCallBack
@synthesize deleage;
- (void) runThread
{
NSLog(@" ");
[NSThread sleepForTimeInterval:2];
[deleage callback:1];
}
- (void)setRun
{
NSThread *callbackthread = [[NSThread alloc] initWithTarget:self selector:@selector(runThread) object:nil];
[callbackthread start];
}
@end
ここでは,スレッドによる非同期コールバックにより,プログラムがより直感的になる.
MyCallBack *vv = [[MyCallBack alloc] init];
vv.deleage = self;
[vv setRun];
protocolを使用する場所でこのprotocolを実現し、ポインタを転送する必要があります.
インターネットのちょっとした事 www.yidin.net