iOS 多執行緒技術2

2021-09-07 13:19:00 字數 1741 閱讀 4011

//建立乙個佇列

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 乙個繼承自...