2025年ios沙箱软件_iOS沙盒管理工具FHHSandBoxViewer

ios沙箱软件_iOS沙盒管理工具FHHSandBoxViewerKeyWord 沙盒文件递归遍历 Swift 里的闭包多个 weak 修饰 iOS 使用 AirDrop 操作演示 gif 平时真机开发调试 App 的时候想查看沙盒具体内容一般做法是连接 Xcode 下载整个 App 的沙盒 不方便 于是自己写了一个沙盒查看器 如何导入使用 Swift 下 1

大家好,我是讯享网,很高兴认识大家。

KeyWord:沙盒文件递归遍历、Swift里的闭包多个weak修饰、iOS使用AirDrop


讯享网

操作演示.gif

平时真机开发调试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混编开发配置;

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导出,第三方软件对分享内容、大小、数量有限制

Tip:

1.使用AirDrop分享受系统保护的文件夹或文件会失败,不同系统或设备可能会有差别;例如,我在iOS10.1.1-iPhone7上分享Doucnemts、Library、temp目录失败,在iOS11.3-iPhone8上分享Doucnemts、Library、temp则成功,详情查看控制器打印的错误信息。

2.模拟器下的话可以使用软件TySimulator查看沙盒内容,也很方便。

3.手机空间不足也可能会导致AirDrop分享失败。

小讯
上一篇 2025-01-10 12:24
下一篇 2025-02-17 07:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/62941.html