//建立乙個佇列
nsoperationqueue *queue = [[nsoperationqueue alloc] init];
//建立子任務,定義子任務必須是 nsoperation 的子類
nsinvocationoperation *op = [[nsinvocationoperation alloc] initwithtarget:self selector:@selector(dosomething:) object:@"nsinvocationoperation"];
//當把任務加入到佇列後,自己主動開啟執行緒
[queue addoperation:op];
//建立乙個佇列
nsoperationqueue *queue = [[nsoperationqueue alloc] init];
//建立 nsblockoperation 物件
nsblockoperation *operation = [nsblockoperation blockoperationwithblock:^];
//加入佇列
[queue addoperat:operation];
demo:
以下我用nsoperation 的兩種方法來建立乙個樣例,實現與上篇一樣的功能,
#import "viewcontroller.h"
---@inte***ce
viewcontroller ()
@property (weak, nonatomic) iboutlet
uiimageview *iamgeview;
@property (weak, nonatomic) iboutlet
uilabel *lable;
@property (nonatomic, strong) nsoperationqueue *queue;
@end
@implementation
viewcontroller
- (void)viewdidload
- (void)dosomething:(nsstring*)str
- (void)updatelable:(nsstring*)str
_lable.text = str;
}- (ibaction)btnaction:(uibutton *)sender ];
[_queue addoperation:blockop];
}- (void)updateimageview:(uiimage*)img
_iamgeview.image = img;
}@end
執行結果:
2015-08-02 15:03:33.909 05-nsoperationdemo[3284:874300] (
「」 )
2015-08-02 15:03:36.911 05-nsoperationdemo[3284:874300] 主線程》-[viewcontroller updatelable:]
2015-08-02 15:03:47.730 05-nsoperationdemo[3284:874300] 主線程》-[viewcontroller updateimageview:]
iOS多執行緒技術
self performselectorinbackground selector intobackground withobject nil self performselectoronmainthread selector intoforword withobject nilwaituntild...
iOS多執行緒
iphone 中的執行緒應用並不是無節制的,官方給出的資料顯示iphone os下的主線程的堆疊大小是1m,第二個執行緒開始都是512kb。並且該值不能通過編譯器開關或執行緒api函式來更改。只有主線程有直接修改ui的能力。一 nsoperation和nsoperationqueue 1 乙個繼承自...
iOS多執行緒
iphone 中的執行緒應用並不是無節制的,官方給出的資料顯示iphone os下的主線程的堆疊大小是1m,第二個執行緒開始都是512kb。並且該值不能通過編譯器開關或執行緒api函式來更改。只有主線程有直接修改ui的能力。一 nsoperation和nsoperationqueue 1 乙個繼承自...