思路
1 建立一个NSObject子类,内部创建NSThread。Thread中运行NSRunLoop。
1 建立一个NSObject子类,内部创建NSThread。Thread中运行NSRunLoop。
2 使用perform函数,将运行的函数运行在启动的Thread。
#import <Foundation/Foundation.h>
typedef void (*Fun)();
@interface DLRunloopModel : NSObject
@property(nonatomic, strong) NSThread *mThread;
@property(nonatomic, assign) Fun fun;
-(void) doSomething;
@end
@implementation DLRunloopModel
-(id) init{
self = [super init];
if (self) {
self.mThread = [[NSThread alloc] initWithTarget:self selector:@selector(doThread) object:nil];
[self.mThread start];
}
return self;
}
-(void) doCheck{
self.fun();
NSLog(@"current thread:%@", [NSThread currentThread].name);
}
-(void) doCheck1{
NSLog(@"current thread 1:%@", [NSThread currentThread].name);
}
-(void) doThread{
NSLog(@"2");
[[NSThread currentThread] setName:@"TestInfo"];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[runLoop run];
NSLog(@"3");
}
-(void) doSomething{
[self performSelector:@selector(doCheck) onThread:self.mThread withObject:nil waitUntilDone:YES];
}
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "DLRunloopModel.h"
void addSum(){
printf("sum \n");
}
int main(int argc, char * argv[]) {
// @autoreleasepool {
// return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
// }
DLRunloopModel *model = [[DLRunloopModel alloc] init];
model.fun=addSum;
[model doSomething];
}