KVO實現自定義檔案複製進度展示

2021-07-31 01:37:31 字數 1511 閱讀 2787

一、建立檔案

說明:自定義檔案類,通過nsfilemanager 以及nsfilehandle 實現檔案的建立和copy,為了控制記憶體的併發使用,通過控制每次賦值的固定長度來分多次複製:

nsstring * path=nshomedirectory();

desktop/boby.m"];

nsstring * target=nshomedirectory();

desktop/target.m"];

nsfilemanager * manager=[nsfilemanager defaultmanager];

//校驗並且建立檔案

if(![manager fileexistsatpath:path])

if(![manager fileexistsatpath:target])

nsdictionary * dic=[manager attributesofitematpath:path error:nil];

nsfilehandle * handle=[nsfilehandle filehandleforreadingatpath:path];

nsfilehandle * handlettarget=[nsfilehandle filehandleforwritingatpath:target];

int total=(int)[dic[@"

nsfilesize

"] integervalue];

self.totalsize=total;

int per=50

;

int count=total%per==0?total/per:total/per+1

;

for(int i=0;i)

self.nowsize=tem;

[handlettarget seektoendoffile];

[handlettarget writedata:data];

[nsthread sleepfortimeinterval:

0.2];

}[handle closefile];

[handlettarget closefile];

二、設定觀察者

說明:自定義使用者,通過設定觀察者來動態觀察當前檔案copy的進度並展示到控制台或者輸出到ui,並提供方法介面,啟動檔案拷貝。

- (id) initwithfile:(filemake *)files

return

self;

}-(void)observevalueforkeypath:(nsstring *)keypath ofobject:(id)object change:(nsdictionary *)change context:(void *)context

}- (void

) begin

自定義KVO(探索KVO底層本質)

標頭檔案 import inte ce nsobject kvo void lyj addobserver nsobject observer forkeypath nsstring keypath options nskeyvalueobservingoptions options context...

自定義 ProgressBar 進度條 自定義樣式

今天學習給progressbar換個樣式,先看效果圖 c h,e d8 z f j x 原理 在xml檔案中分別定義進度條背景 第一進度顏色 第二進度顏色,然後在progressbar的android progressdrawable屬性應用即可。6 j a7 c h b k h q y g s d...

javascript實現自定義進度條

直接給 返回瀏覽器型別 ie,firefox,opera function getbrowser if browser isie true if browser isfirefox true if browser isopera true return type 生成靜態進度條 param prog...