ios沙箱软件_iOS沙盒管理工具FHHSandBoxViewer
KeyWord:沙盒文件遞歸遍歷、Swift里的閉包多個weak修飾、iOS使用AirDrop
操作演示.gif
平時真機開發(fā)調試App的時候想查看沙盒具體內容一般做法是連接Xcode下載整個App的沙盒,不方便,于是自己寫了一個沙盒查看器。
如何導入使用
Swift下
1.拖入文件夾FHHSandBoxViewer到你的工程;
2.找個入口然后添加如下代碼:
let title = FHHSandboxViewController.defaultNavTitle
let path = FHHSandboxViewController.defaultPath
let sandBoxViewerVC = FHHSandboxViewController.init(navTitle: title, path: path)
let nav = UINavigationController.init(rootViewController: sandBoxViewerVC)
nav.navigationBar.isHidden = true
nav.navigationBar.isTranslucent = true
self.present(nav, animated: true, completion: {
sandBoxViewerVC.fhh_enterType = .present
})
OC下
1.拖入文件夾FHHSandBoxViewer到你的工程;
2.如果你的項目之前沒有使用Swift,需要配置你Xcode的ProductName-Bridging-Header.h文件,可以參考OC和Swift混編開發(fā)配置;
3.找個入口添加如下代碼:
NSString *defaultTitle = [FHHSandboxViewController defaultNavTitle];
NSString *defaultPath = [FHHSandboxViewController defaultPath];
FHHSandboxViewController *sandBoxViewerVC = [[FHHSandboxViewController alloc]
initWithNavTitle:defaultTitle
path:defaultPath];
UINavigationController *nav = [[UINavigationController alloc]
initWithRootViewController:sandBoxViewerVC];
[nav.navigationBar setHidden:YES];
[nav.navigationBar setTranslucent:YES];
[self presentViewController:nav animated:YES completion:^{
sandBoxViewerVC.fhh_enterType = FHHEnterTypePresent;
}];
MARK:
Swift閉包中用weak修飾多個對象
FHHSandboxViewController.swift中
在viewMoel的閉包中需要用weak修飾self并且對viewMoel本身也要weak修飾防止內存泄漏,但是之前沒試過一個閉包多個weak修飾的寫法,翻了翻官方文檔,寫法如下:
private func configSandboxViewModelDidSelectBlock(viewModel: FHHSandboxViewModel, subPath: String) {
viewModel.didSelectBlock = { [weak self, weak viewModel] in
if (self?.isSelected)! {
viewModel?.isSelected = !(viewModel?.isSelected)!
self?.tableView.reloadData()
self?.refreshAccessoryView()
} else {
if (viewModel?.isDir)! {
let vc = FHHSandboxViewController.init(navTitle: (viewModel?.pathLastName!)!, path: subPath)
self?.navigationController?.pushViewController(vc, animated: true)
}
}
}
}
使用AirDrop等分享內容:
let shareURLArray = self.getSelectedURL()
let vc = UIActivityViewController.init(activityItems: shareURLArray, applicationActivities: nil)
let completionWithItemsHandler = { (type: UIActivityType?, isSucceed: Bool?,array: Array?, error: Error?) in
FHHLog("error:\(String(describing: error?.localizedDescription))")
self.resetToUnSelectState()
self.tableView.refresh(viewModelArray: self.viewModelArray)
}
vc.completionWithItemsHandler = completionWithItemsHandler
self.present(vc, animated: true, completion:nil)
建議使用AirDrop導出,第三方軟件對分享內容、大小、數(shù)量有限制
Tip:
1.使用AirDrop分享受系統(tǒng)保護的文件夾或文件會失敗,不同系統(tǒng)或設備可能會有差別;例如,我在iOS10.1.1-iPhone7上分享Doucnemts、Library、temp目錄失敗,在iOS11.3-iPhone8上分享Doucnemts、Library、temp則成功,詳情查看控制器打印的錯誤信息。
2.模擬器下的話可以使用軟件TySimulator查看沙盒內容,也很方便。
3.手機空間不足也可能會導致AirDrop分享失敗。
總結
以上是生活随笔為你收集整理的ios沙箱软件_iOS沙盒管理工具FHHSandBoxViewer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文本生成魔改方案汇总!
- 下一篇: linux免费的内网穿透