亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

KVO實現(xiàn)自定義文件復制進度效果

 更新時間:2017年08月12日 11:03:07   作者:杰瑞教育  
這篇文章主要為大家詳細介紹了KVO實現(xiàn)自定義文件復制進度效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了KVO實現(xiàn)自定義文件復制進度展示的具體代碼,供大家參考,具體內(nèi)容如下

一、創(chuàng)建文件

說明:自定義文件類,通過NSFileManager 以及NSFileHandle 實現(xiàn)文件的創(chuàng)建和copy,為了控制內(nèi)存的并發(fā)使用,通過控制每次賦值的固定長度來分多次復制:

NSString * path=NSHomeDirectory();
  path =[path stringByAppendingPathComponent:@"deskTop/Boby.m"];
  
  NSString * target=NSHomeDirectory();
  target =[target stringByAppendingPathComponent:@"deskTop/target.m"];
  
  NSFileManager * manager=[NSFileManager defaultManager];
  
  
  //校驗并且創(chuàng)建文件
  if(![manager fileExistsAtPath:path]){
    [manager createFileAtPath:path contents:nil attributes:nil];
  }
  
  if(![manager fileExistsAtPath:target]){
    [manager createFileAtPath:target contents:nil attributes:nil];
  }
  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<count;i++){
    
    [handle seekToFileOffset:self.nowSize];
    NSData *data= [handle readDataOfLength:per];
    
    int tem=per*(i+1);
    if(tem>total){
      tem=total;
    }

    self.nowSize=tem;
 
    [handletTarget seekToEndOfFile];
    [handletTarget writeData:data];
    [NSThread sleepForTimeInterval:0.2];
    
  }
  
  [handle closeFile];
[handletTarget closeFile];

二、設(shè)置觀察者

說明:自定義使用者,通過設(shè)置觀察者來動態(tài)觀察當前文件copy的進度并展示到控制臺或者輸出到UI,并提供方法接口,啟動文件拷貝。

- (id) initWithFile:(FileMake *)files{
  self=[super init];
  
  if(self){
    self.file= files;
    [self.file addObserver:self forKeyPath:@"nowSize" options:NSKeyValueObservingOptionNew context:nil];
  }
  return self;
}

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
  CGFloat all=self.file.totalSize;
  CGFloat now=[[change objectForKey:@"new"] floatValue];
  CGFloat result=now/all; 
  NSLog(@"%.2f",result);
  //一定不能忘了銷毀當前的觀察者
  if(result==1){
    [self.file removeObserver:self forKeyPath:@"nowSize"];
  }
}

- (void) begin{
  [self.file startCopy];
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS App使用設(shè)計模式中的模板方法模式開發(fā)的示例

    iOS App使用設(shè)計模式中的模板方法模式開發(fā)的示例

    這篇文章主要介紹了iOS應(yīng)用使用設(shè)計模式中的模板方法模式開發(fā)的示例,例子代碼為Objective-C語言,文中還與Java的相關(guān)實現(xiàn)進行類比,需要的朋友可以參考下
    2016-03-03
  • iOS實現(xiàn)小型計算器

    iOS實現(xiàn)小型計算器

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)小型計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • iOS從App跳轉(zhuǎn)至系統(tǒng)設(shè)置菜單各功能項的編寫方法講解

    iOS從App跳轉(zhuǎn)至系統(tǒng)設(shè)置菜單各功能項的編寫方法講解

    這篇文章主要介紹了iOS從App跳轉(zhuǎn)至系統(tǒng)設(shè)置菜單各功能項的編寫方法講解,示例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-04-04
  • iOS的UI開發(fā)中Modal的使用與主流應(yīng)用UI結(jié)構(gòu)介紹

    iOS的UI開發(fā)中Modal的使用與主流應(yīng)用UI結(jié)構(gòu)介紹

    這篇文章主要介紹了iOS的UI開發(fā)中Modal的使用與主流應(yīng)用UI結(jié)構(gòu),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-12-12
  • iOS常見的幾個修飾詞深入講解

    iOS常見的幾個修飾詞深入講解

    這篇文章主要給大家介紹了關(guān)于iOS常見的幾個修飾詞的相關(guān)資料,iOS修飾詞包括assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwrite,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-09-09
  • IOS setOnclick點擊事件分析

    IOS setOnclick點擊事件分析

    本篇文章給大家整理了IOS setOnclick點擊事件完美擴展的相關(guān)知識點以及代碼實例,有需要的朋友可以跟著測試學習下。
    2018-05-05
  • iOS 驗證碼按鈕倒計時功能

    iOS 驗證碼按鈕倒計時功能

    在app注冊或者登錄需要驗證碼的地方、為了避免短時間內(nèi)刷驗證碼、往往會加上一層驗證當?shù)褂嫊r結(jié)束后、可以重新獲取,關(guān)于ios 驗證碼按鈕倒計時功能大家可以參考下本文
    2017-07-07
  • iOS小數(shù)取整的方法(ceil?floor?round)示例

    iOS小數(shù)取整的方法(ceil?floor?round)示例

    這篇文章主要為大家介紹了iOS小數(shù)取整的方法(ceil?floor?round)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Xcode8打印一堆log問題的快速解決方法

    Xcode8打印一堆log問題的快速解決方法

    剛裝的xcode8,不知道從哪來的一堆log,很奇怪。怎么解決此問題呢?下面小編給大家分享本教程幫助大家了解Xcode8打印一堆log問題的快速解決方法,感興趣的朋友跟著小編一起學習吧
    2016-10-10
  • IOS開發(fā)代碼分享之用nstimer實現(xiàn)倒計時功能

    IOS開發(fā)代碼分享之用nstimer實現(xiàn)倒計時功能

    在制作IOS項目中,我們經(jīng)常要用到倒計時功能,今天就分享下使用nstimer實現(xiàn)的倒計時功能的代碼,希望對大家能有所幫助
    2014-09-09

最新評論