1.判断当前界面
[self isViewLoaded] && ![[self view] window]
2.客户端手势解锁、后台进入输入密码界面、启动页介绍、应用内通知提醒消息、应用内弹窗。 都可以使用UIWindow。 自定义window 继承UIWindow来实现。
3.block不要滥用
控件与VC通讯,代理delegate更加安全。
类方法绝对不会产生循环引用,建议使用block。 例如系统的动画API。
GCD里也不用weak,因为系统明确已经处理了,如果你使用weak,还可能会造成对象提前释放等异常crash。
4.Xcode 快捷键
1.cmd + shift +O: 快速查找类,直接跳转到类的源代码中。 多数用来查找当前工程的类。
2.Ctrl + 6: 在当前文件中查找方法,可以输入关键字过滤
3.cmd +ctrl + up:.h 与 .m切换
4.cmd + shift + y:控制台console 的隐藏与显示
5.cmd + Ctrl +Left/Right:在最近两次编辑(文件)位置跳转
6.cmd + shift + [ : tab栏之间切换
7.cmd + 1/2/3: 在模拟器上,切换模拟器比例
5.App路径
app 路径.png
Documents目录用于保存App的数据,包括App运行时需要的各类文件以及用户的数据等。
Documents文件夹可以在连接iTunes时选择备份,通常Documents目录用来存放可以对外的文件。
Library目录用来保存不对外的数据,但同样可以被iTunes备份(Library/Caches目录除外,原因就和目录名一样,里面应该只放Caches)。
Library/Caches目录用来放置运行时产生的临时文件以及缓存文件,空间不足时可能会被iOS系统删除。
Library/Preferences目录通常用于保存用户的设置等信息,比如我们常用的NSUserDefaults类就会以plist的方式保存在该目录中。
tmp目录用来保存不重要的临时文件,在系统重启后会被清空,容易知道这个也不会被iTunes备份。
//获取沙盒根目录方法
NSString *Path = NSHomeDirectory();
NSLog(@"沙盒根路径 = %@", Path);
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSLog(@"Document Path Array %@", pathArray);
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSLog(@"Document Path = %@",documentPath);
NSArray *libArray = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSLog(@"library array = %@", libArray);
NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@"library path = %@", libraryPath);
// 获取cache目录路径
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) firstObject];
NSLog(@"cache path = %@", cachesDir);
// 获取tmp目录路径
NSString *tmpDir =NSTemporaryDirectory();
NSLog(@"temp path = %@", tmpDir);
通过打印路径可以知道,路径Array,就只包含那个一个路径。
网友评论