Mac 使用

iOS 沙盒机制及沙盒目录获取

1. iOS 沙盒机制

iOS 系统为每个iOS APP创建了一个独立的文件区域,该文件区域成为沙盒。该APP所有的非代码文件都只能保存在沙盒中,并且改APP不能访问其他APP的沙盒文件。

1.1 结构

沙盒的目录结构如下:

"应用程序包"
Documents
Library
    Caches
    Preferences
tmp
1.2说明

"应用程序包": 存放应用程序的源文件,包括资源文件和可执行文件。

Documents : 苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录

Library : 存储程序的默认设置或其它状态信息;

Library/Caches : iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据。此目录下文件不会在应用退出删除

Library/Preferences : 存放通过NSUserDefaults来保存的配置信息。iTunes同步该应用时会同步此文件夹中的内容。

tmp : 提供一个即时创建临时文件的地方。

2. 沙盒目录获取

获取"应用程序包"目录 :

NSString *path = [[NSBundle mainBundle] bundlePath];
NSLog(@"%@", path);

获取Documents目录 :

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSLog(@"%@", path);

获取Library/Caches目录 :

NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
NSLog(@"%@", path);

获取tmp目录 :

NSString *path = NSTemporaryDirectory();
NSLog(@"%@", path);

Objective-C 总结

网络相关
  • 网络请求
  • 多线程处理
  • 远程推送
  • 断点下载与断点上传
  • Socket
  • SOAP和RESTApi
Runtime
  • 方法与参数获取
  • 方法的动态修改

    • 解决数组与字典的越界问题
    • 解决按钮的重复点击问题
RunLoop
  • 线程与进程
基础知识
动画
  • drawRect
  • 动画流畅的检查(Profile)
内存问题
  • 内存释放与循环引用
  • 内存泄漏检测(Profile)
  • 内存问题的定位
项目管理
聊天
  • LeanCloud

使用Xcode分析APP内存泄漏

iOS 5.0之后apple引入了Xcode编译器特性ARC(Automatic Reference Counting,自动引用计数)来帮助开发者管理内存,但为了追求app的高性能与减少安装包大小,工作中很多时候需要我们手动管理内存。再牛的开发者也不能保证自己写的code 100%没有内存泄露,出现内存泄露不可怕,可怕的是我们时间与精力花了大把,但内存泄露依旧没解决,即影响了工作效率也影响自己的心情。
下面就讲解xcode中的内存调试神器---Instruments Leak ,不管是ios开发菜鸟,还是有经验的开发者,使用Instruments Leak调试内存泄露是必备技能之一。

buait ghost