1. 合适使用API
-
选择合适的容器
-
了解 imageNamed: 与 imageWithContentsOfFile:的差异(imageNamed: 适用于会重复加载的小图片,因为系统会自动缓存加载的图片,imageWithContentsOfFile: 仅加载图片,不缓存)
-
缓存NSDateFormatter的对象结果(原因: 官方说法,创建NSDateFormatter代价是比较高的,如果你使用的非常频繁,那么建议你缓存起来,缓存NSDateFormatter一定能提高效率。)
static NSDateFormatter * dateFormatter = nil;
+(NSDateFormatter*)cachedDateFormatter
{
if (!dateFormatter ) {
dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setLocale:[NSLocale currentLocale]];
[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
}
return dateFormatter;
}
- 寻找(NSDate *)dateFromString:(NSString )string 的替换品 ,这是性能优化遇到的常见问题 ([formatter dateFromString:timeAnddateStr];)
#import <time.h>
-(NSDate*) dateByISO8601FromString:(NSString *)string
{
if (!string) {
return nil;
}
time_t t ;
struct tm tm;
strptime((void*)([string cStringUsingEncoding:NSUTF8StringEncoding]), "%Y-%m-%dT%H:%M:%S%z", &tm);
tm.tm_isdst = -1;
t = mktime(&tm);
return [NSDate dateWithTimeIntervalSince1970:t + [[NSTimeZone localTimeZone] secondsFromGMT]];
}
-
当试图获取磁盘中一个文件的属性信息时,使用 [NSFileManager attributesOfItemAtPath:error:] 会浪费大量时间读取可能根本不需要的附加属性。这时可以使用 stat 代替 NSFileManager,直接获取文件属性:
使用 stat 代替 NSFileManager.png
2. 预加载和延时加载
预处理,是将初次显示需要耗费大量线程时间的操作,提前放到后台线程进行计算,再将结果数据拿来显示。
延时加载,是指首先加载当前必须的可视内容,在稍后一段时间内或特定事件时,再触发其他内容的加载。这种方式可以很有效的提升界面绘制速度,使体验更加流畅。(UITableView 就是最典型的例子)
网友评论