一、項目結構
二、主要代碼
1、CoreManage.h
#import <Foundation/Foundation.h>@protocol SampleProtocol;//聲明核心類的屬性和方法@interface CoreManage : NSObject@property(nonatomic,assign) id<SampleProtocol> delegate;- (void)doMainWork;@end//聲明協議中的介面函數@protocol SampleProtocol <NSObject>@required- (void)innerTaskCallBack:(int) innerTaskSerialNo;@optional- (void)resultDisplayCallBack:(NSString *)backInfo;@end
2、CoreManage.m
#import "CoreManage.h"@implementation CoreManage@synthesize delegate=_delegate;- (id)init{ self = [super init]; if (self) { //初始化代碼 } return self;}- (void)doMainWork{ NSLog(@"核心類完成工序0"); NSLog(@"核心類完成工序1"); [self.delegate innerTaskCallBack:2];//工序2通過外部類回呼函數完成 NSLog(@"核心類完成工序3"); [self.delegate resultDisplayCallBack:@"成功"];//通過外部類回呼函數顯示任務完成結果}@end
3、OuterClass.h
#import <Foundation/Foundation.h>#import "CoreManage.h"@interface OuterClass : NSObject<SampleProtocol>- (void)run;@end
4、OuterClass.m
#import "OuterClass.h"@implementation OuterClass- (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]; return YES;}
三、運行結果
參考:
網路通訊與UI相結合的回調:
http://blog.csdn.net/z251257144/article/details/7175516