UIDocumentInteractionController 預(yù)覽文件與解決內(nèi)存無法釋放問題

設(shè)置為屬性

@property (nonatomic ,strong) UIDocumentInteractionController *documentInteractionController;

創(chuàng)建

- ( void )setupDocumentControllerWithURL:( NSURL *)url
{
    if ( self.documentInteractionController == nil ){
        self.documentInteractionController = [ UIDocumentInteractionController interactionControllerWithURL :url];
    self.documentInteractionController.delegate = self ;
    }
    else {
        self.documentInteractionController.URL = url;
    }
 }

  /**
  *  打開文件
  */
-(void)openFileWithPath:(NSString*)path{
NSURL* URL = [NSURL fileURLWithPath:path];
if (URL) {
[ self setupDocumentControllerWithURL :URL];
// CGRect rect = CGRectMake ( 0 , 0 , kScreenW , kScreenH);
// [self.documentInteractionController presentOptionsMenuFromRect:rect inView:self.view  animated:YES];//包含快速預(yù)覽菜單
[self.documentInteractionController presentPreviewAnimated:YES];
}
}

必須需要實(shí)現(xiàn)代理方法才能預(yù)覽

/**
*  預(yù)覽用的Controller
*/
-(UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller{
return self;
}

/**
*  預(yù)覽用的View
*/
-(UIView *)documentInteractionControllerViewForPreview:(UIDocumentInteractionController *)controller{
return self.view;
}

- (void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller{
NSLog(@"will begin preview");
}

- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller{
NSLog(@"did end preview");
}

這樣使用是可以了.當(dāng)你要在下載文件完成后打開文件,會(huì)這樣寫

NSData *data = responseObject;
BOOL isWrite = [data writeToFile:[MyTools filePathInTmpWithFile:fileName] atomically:YES];
MAIN(^{
[self.mbHud hideAnimated:YES];
});
if (isWrite) {//調(diào)用打開文件
[self openFileWithPath:[MyTools filePathInTmpWithFile:fileName]];
}else{
MAIN(^{
[MyTools showAlertWithTitle:kLocStr(@"提示") andContent:kLocStr(@"打開文件失敗!") andBlock:nil atController:self];
});
}

這樣會(huì)出現(xiàn)問題,當(dāng)下載的過程中,退出當(dāng)前頁面,下載會(huì)繼續(xù)的,下載完成后繼續(xù)運(yùn)行你的代碼打開文件進(jìn)行預(yù)覽,雖然你看不到這個(gè)過程,但是確實(shí)是這樣的,而且會(huì)造成當(dāng)前控制器無法釋放,造成內(nèi)存泄漏!

解決辦法:

@property (nonatomic ,assign) BOOL isAppear;         //判斷是否當(dāng)前頁面正在顯示
 - (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
self.isAppear = NO;
if (self.documentInteractionController) {
self.documentInteractionController.delegate = nil;
NSLog(@"\\ndelegate == nil\\n");
}
}

- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.isAppear = YES;
if (self.documentInteractionController) {
self.documentInteractionController.delegate = self;
}
}



- ( void )setupDocumentControllerWithURL:( NSURL *)url
{
if (!self.isAppear) {
return;
}
if ( self.documentInteractionController == nil ){
self.documentInteractionController = [ UIDocumentInteractionController interactionControllerWithURL :url];
self.documentInteractionController.delegate = self ;
}
else {
self.documentInteractionController.URL = url;
}
}

- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller{
NSLog(@"did end preview");
self.documentInteractionController = nil;
}

這樣就可以了!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末技即,一起剝皮案震驚了整個(gè)濱河市著洼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌而叼,老刑警劉巖身笤,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異葵陵,居然都是意外死亡液荸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門脱篙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娇钱,“玉大人伤柄,你說我怎么就攤上這事∥穆В” “怎么了适刀?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)煤蹭。 經(jīng)常有香客問我笔喉,道長(zhǎng),這世上最難降的妖魔是什么硝皂? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任常挚,我火速辦了婚禮,結(jié)果婚禮上稽物,老公的妹妹穿的比我還像新娘奄毡。我一直安慰自己,他們只是感情好姨裸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布秧倾。 她就那樣靜靜地躺著怨酝,像睡著了一般傀缩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上农猬,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天赡艰,我揣著相機(jī)與錄音,去河邊找鬼斤葱。 笑死慷垮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的揍堕。 我是一名探鬼主播料身,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼衩茸!你這毒婦竟也來了芹血?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤楞慈,失蹤者是張志新(化名)和其女友劉穎幔烛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囊蓝,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饿悬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了聚霜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狡恬。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秒裕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闷板,到底是詐尸還是另有隱情侦铜,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布函卒,位于F島的核電站辆憔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏报嵌。R本人自食惡果不足惜虱咧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锚国。 院中可真熱鬧腕巡,春花似錦、人聲如沸血筑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽豺总。三九已至车伞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喻喳,已是汗流浹背另玖。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留表伦,地道東北人谦去。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蹦哼,于是被迫代替她去往敵國和親鳄哭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理纲熏,服務(wù)發(fā)現(xiàn)妆丘,斷路器,智...
    卡卡羅2017閱讀 134,660評(píng)論 18 139
  • Ubuntu的發(fā)音 Ubuntu宣脉,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音剔氏。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 99,277評(píng)論 9 467
  • 今天老公在家塑猖,我不用做飯竹祷,不用洗碗,不用看孩子的作業(yè)羊苟。不用做天天都不想做但是還要做的事塑陵。老公在家真好。
    燕子136閱讀 98評(píng)論 0 0
  • 一年之計(jì)在于春蜡励,在這春滿花開的季節(jié)我們要外出培訓(xùn)啦令花。剛開始接到出差通知時(shí)內(nèi)心是拒絕的,前兩年跟領(lǐng)導(dǎo)出門留下陰影凉倚,想...
    hello菜菜的天使閱讀 174評(píng)論 0 0