关于项目优化的一些小技巧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于项目优化的一些小技巧相关的知识,希望对你有一定的参考价值。

1.若项目能编译成功,但有错误提示时,可以用清理缓存的方式解决。

就是把/Users/用户名/Library/Developer/Xcode/DerivedData文件全部删除。
但要注意的是删除前要关闭项目,否则该问题仍存在。

 

2.利用NSData读取文件

NSData读取文件时分两种形式,通过网络读取和本地读取。二者不能混淆,否则会导致nil问题

//读取本地文件
NSData *dataTemp = [NSData dataWithContentsOfFile:@"/Volumes/IMG_992.png"];

//读取网络文件
NSUrl *url = [NSUrl URLWithString:@"http://baike.baidu.com/pic/%E7%BE%8E%E5%9B%BD/125486/0/377adab44aed2e73523e86b38501a18b86d6fa5e?fr=lemma&ct=single#aid=0&pic=377adab44aed2e73523e86b38501a18b86d6fa5e"];
NSData *dataTemp = [NSData dataWithContentsOfURL:url];

若读取本地文件时使用dataWithContentsOfURL,如

NSUrl *url = [NSUrl URLWithString:@"/Volumes/IMG_992.png"];
NSData *dataTemp = [NSData dataWithContentsOfURL:url];

那么dataTemp将会是nil,这二者不能混淆

 

3.图片优化的一个小技巧

就是获取图片时,尽量用imageWithContentsOfFile来代替[UIImage imageNamed:@""]

因为imageNamed读取图片时,会缓存在内存中,不容易被释放。在使用imageWithContentsOfFile时需注意两个问题
①.xcassets里的图片无法被imageWithContentsOfFile读取
②imageWithContentsOfFile读取图片需要加图片的扩展名,如png,jpg等

 

4.在xcode中debug时,若想po self.view.frame或po id类型数据时,会出现

技术分享

那么此时就需要在终端输入三条指令使之能打印出来

1.  touch ~/.lldbinit
2.  echo display @import UIKit >> ~/.lldbinit
3.  echo target stop-hook add -o \"target stop-hook disable\" >> ~/.lldbinit

输完后若不出现任何提示,则表示操作成功。
此时重新开始项目即可,无需重启Xcode。成功后

技术分享

 

 

5.使用quartz2d画图中带有create,copy,retain等方法创建出来的值都必须手动释放,否则在analyze时会报内存溢出问题。

手动释放有两种方法

CGPathRelease(path);
CFRelease(path);

技术分享

CAShapeLayer *layer = [CAShapeLayer new];
UIBezierPath *path = [UIBezierPath new];
    
CGPathRef bound = CGPathCreateCopyByStrokingPath(layer.path, nil, layer.lineWidth, kCGLineCapButt, kCGLineJoinMiter, layer.miterLimit);
layer.bounds = CGPathGetBoundingBox(bound);

手动释放该值,必须有

CGPathRelease(bound);

或者使用

CFRelease(bound);
//CFRelease属于更底层的cocafoundation框架

 

以上是关于关于项目优化的一些小技巧的主要内容,如果未能解决你的问题,请参考以下文章

Android课程---Android Studio使用小技巧:提取方法代码片段

.NET性能优化小技巧

提效小技巧——记录那些不常用的代码片段

一些关于Java开发的小技巧

React性能优化小技巧

React性能优化小技巧