本文介绍: 解释常量没有类型信息,并且其含义不明确。此外,在预处理过程中会把碰到的所有ANIMATION_DURATION一律替换成0.3。

第4条:多用类型常量,少用#define预处理指令

1. 用#define预处理指令定义常量

#define ANIMATION_DURATION 0.3;

解释常量没有类型信息,并且其含义不明确。此外,在预处理过程中会把碰到的所有ANIMATION_DURATION一律替换成0.3。

2. 类型常量

static const NSTimeInterval kAnimationDuration = 0.3;

 

解释:这种方式定义常量包含类型信息,且清楚地描述常量的含义。

3.类型常量命名

3.1 常量局限于某“编译单元”(即实现文件

若不打算公开某个常量,则应将其定义使用该常量的实现文件里。

如:

static const NSTimeInterval kAnimationDuration = 0.3;

变量一定要同时用staticconst声明

实际上,如果一个变量既声明为static,又声明为const,那么编译器根本不会创建符号,而是会像#define预处理指令一样,把所有遇到的变量都替换为常值。

3.2 常量在类之外可见

有时候需要对外公开某个常量。最常见的例子是:用字符串来表示通知名称,并将其声明为一个外界可见的常值变量。这样,只需以常量变量来注册自己想要接收通知即可
此类常量需放在“全局符号”(global symbol table)中,以便可以定义该常量的编译单元之外使用

如:

/* 头文件 “声明”  */
extern NSString *const EOCLoginManagerDidLoginNotification;

/* 实现文件定义”  */
NSString *const EOCLoginManagerDidLoginNotification = @"EOCLoginManagerDidLoginNotification";

 

这样,所定义的常量要优于使用#define预处理指令。因为编译器会确保常量值不变。

要点

原文地址:https://blog.csdn.net/qq_24252589/article/details/129913266

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_13677.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注