美文网首页
iOS 日常开发细节(代码篇)

iOS 日常开发细节(代码篇)

作者: YannChee | 来源:发表于2017-03-15 18:17 被阅读14次

1.宏定义

// ...表示宏定义的可变参数
// __VA_ARGS__:表示函数里面的可变参数
#ifdef DEBUG
#define QYLog(...) NSLog(__VA_ARGS__)
#else
#define QYLog(...)
#endif
// 偏好设置存储的好处
// 1.不需要关心文件名
// 2.快速进行键值对存储

// 补充:控制器的view
// UITabBarController控制器的view在一创建控制器的时候就会加载view
// UIViewController的view,才是懒加载。

2.枚举 enum,NS_ENUM,NS_OPTIONS

在iOS6和Mac OS 10.8以后Apple引入了两个宏NS_ENUM,NS_OPTIONS来重新定义C语言风格的enum,实际上是将enum定义和typedef合二为一,并且采用不同的宏来从代码角度来区分。

enum{   
    UIViewAnimationTransitionNone,  
    UIViewAnimationTransitionFlipFromLeft,  
    UIViewAnimationTransitionFlipFromRight,  
    UIViewAnimationTransitionCurlUp,  
    UIViewAnimationTransitionCurlDown,  
} UIViewAnimationTransition;  

替换为:

typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {  
    UIViewAnimationTransitionNone,//默认从0开始  
    UIViewAnimationTransitionFlipFromLeft,  
    UIViewAnimationTransitionFlipFromRight,  
    UIViewAnimationTransitionCurlUp,  
    UIViewAnimationTransitionCurlDown,  
};  

位移操作枚举定义

 
enum {  
    UIViewAutoresizingNone                 = 0,  
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,  
    UIViewAutoresizingFlexibleWidth        = 1 << 1,  
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,  
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,  
    UIViewAutoresizingFlexibleHeight       = 1 << 4,  
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5  
};  
typedef NSUInteger UIViewAutoresizing; // UIViewAutoresizing相当于NSUInteger的一个别名使用。  

替换为:

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {  
    UIViewAutoresizingNone                 = 0,  
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,  
    UIViewAutoresizingFlexibleWidth        = 1 << 1,  
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,  
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,  
    UIViewAutoresizingFlexibleHeight       = 1 << 4,  
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5  
};  

相关文章

网友评论

      本文标题:iOS 日常开发细节(代码篇)

      本文链接:https://www.haomeiwen.com/subject/iznmgttx.html