iphone多线程使用setNeedsDisplay重绘drawRect

本文介绍了一个UIKit子类的实现方式,包括初始化方法、前台绘画与后台数据读取的方法。通过使用多线程技术实现了界面更新与数据读取的并发执行,解决了类变量在不同线程中的引用计数问题。
uiview子类{
初始化方法
-(id)initWithFrame:(CGRect)frame{
初始化类变量
t=[test new];
}

//前台绘画
-(void)drawRect:(CGRect)rect{
可以访问t变量
if(t != nil){
获取context
}
}
//后台读取数据
-(void)read{


}

-(void)run{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
[self performSelectorOnMainThread:@selector(setNeedsDisplay) vithObject:nil waitUntilDon:NO];
[NSThread sleepForTimeInterval:0.5];
[pool drain];
}


-(void)start{
NSThread *drawUI=[[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
[drawUI start];

NSThread *readn=[[NSThread alloc] initWithTarget:self selector:@selector(read) object:nil];
[readn start];

}
}

注意这个方法中的initWithFrame,如果不用这个方法初始化,重绘drawRect的时候类变量t的计数会为0.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值