简介
在 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"