iOS开发技巧总结2016-01-08

  • 用宏定义检测block是否可用!
#define BLOCK_EXEC(block, ...) if (block) { block(__VA_ARGS__); };    
 
// 宏定义之前的用法  
/* 
if (completionBlock)   
{   
    completionBlock(arg1, arg2);   
}   
  */  
 
// 宏定义之后的用法  
BLOCK_EXEC(completionBlock, arg1, arg2);
  • 给SDK头文件加权限

如果您是从DMG安装Xcode的,看看这个技术通过Joar Wingfors,以避免通过保留所有权,权限和硬链接意外修改SDK头:

$ sudo ditto /Volumes/Xcode/Xcode.app /Applications/Xcode.app
  • 使用ARC和不使用ARC
//使用ARC和不使用ARC
#if __has_feature(objc_arc)
//compiling with ARC
#else
// compiling without ARC
#endif
  • 读取本地图片
#define LOADIMAGE(file,ext)
 [UIImage imageWithContentsOfFile:
[NSBundle mainBundle]pathForResource:file 
ofType:ext]
 
//定义UIImage对象
#define IMAGE(A) [UIImage imageWithContentsOfFile:[NSBundle mainBundle] pathForResource:A ofType:nil]

  • iOS图片内存优化(博文)内存优化经验

解决步骤:instrument调试后,发现没被释放的全是imageIO,差不多就知道了,把读图的方式,从[UIImage imageNamed:@”“],改成imageWithContentsOfFile,就可以了。

http://cc.cocimg.com/api/uploads/20151231/1451545606845232.png

问题原因:imageNamed读取图片的方法,会缓存在内存中,所以较大的图片,还是用imageWithContentsOfFile。?
Tip1:.xcassets里的图片无法用imageWithContentsOfFile读取;?
Tip2:imageWithContentsOfFile读取图片需要加文件后缀名如png,jpg等;

你可能感兴趣的:(iOS开发技巧总结2016-01-08)