ios回调函数的标准实现:protocol+delegate

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一、项目结构

二、主要代码

1、CoreManage.h

#import<Foundation/Foundation.h>@PRotocolSampleProtocol;//声明核心类的属性和方法@interfaceCoreManage : NSObject

@property(nonatomic,assign)id<SampleProtocol>delegate;- (void)doMainWork;@end//声明协议中的接口函数@protocolSampleProtocol <NSObject>@required- (void)innerTaskCallBack:(int) innerTaskSerialNo;

@optional- (void)resultDisplayCallBack:(NSString *)backInfo;@end

2、CoreManage.m

#import"CoreManage.h"@implementationCoreManage@synthesizedelegate=_delegate;- (id)init

{

self=[super init];if(self) {//初始化代码}returnself;

}- (void)doMainWork

{

NSLog(@"核心类完成工序0");

NSLog(@"核心类完成工序1");

[self.delegateinnerTaskCallBack:2];//工序2通过外部类回调函数完成NSLog(@"核心类完成工序3");

[self.delegateresultDisplayCallBack:@"成功"];//通过外部类回调函数显示任务完成结果}@end

3、OuterClass.h

#import<Foundation/Foundation.h>#import"CoreManage.h"@interfaceOuterClass : NSObject<SampleProtocol>

- (void)run;@end

4、OuterClass.m

#import"OuterClass.h"@implementationOuterClass- (void)run

{

CoreManage*coreManage=[[CoreManage alloc] init];

coreManage.delegate=self;

[coreManage doMainWork];

}//回调函数1- (void)innerTaskCallBack:(int) innerTaskSerialNo{

NSLog(@"外部类的回调函数,完成工序%d",innerTaskSerialNo);

}//回调函数2- (void)resultDisplayCallBack:(NSString *)backInfo{

NSLog(@"外部类的回调函数,输出完成结果:%@",backInfo);

}@end

5、AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

OuterClass*outerClass=[[OuterClass alloc]init];

[outerClass run];

self.window.backgroundColor=[UIColor whiteColor];

[self.window makeKeyAndVisible];returnYES;

}

三、运行结果

参考:

网络通讯与UI相结合的回调:

http://blog.csdn.net/z251257144/article/details/7175516

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航