多用类型常量,少用#define 预处理指令

简介


在 Objective - C 中我们经常会用到#define来进行宏定义,但是殊不知宏定义也会给我们带来一系列的影响。

异同


例:
 #define ANIMATION_DURATION 0.1
 static const NSTimeInterval kAnimationDuration = 0.1;
  • 上述的例子里面的 define会将源码中的所有的ANIMATEIONDURATION字符串都替换为0.1,这样定义出来的常量没有类型信息,当我们引入 ANIMATION_DURATION的时候,类中的所有ANIMATION_DURATION就都会被替换掉;
  • 如果在开发中我们最好还是向如下那么定义,这样清楚的描述了常量的含义,由此可知道该常量类型为 NSTimeInterval。

用法


1.0 定义
.m文件中
#imprt "EOCAnimationView.h"
static const NSTimeInterval kAnimationDuration = 0.1;
@implementation EOCAnimationView
@end
2.0 定义(也可以这样定义)
.h
extern const NSTimeInterval EOCAnimationDuration
.m
const NSTimeInterval EOCAnimationDuration = 0.1;
3.0 通知(这样写的好处是外界可以调通知但是内部又做了保护)
.h
extern NSString *const EOCNotification
.m
NSString *const EOCNotification = "Notification"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容