文档章节

Effective Objective-C 2.0第四条:定义常量的方法

xiaobai1315
 xiaobai1315
发布于 2017/02/07 11:12
字数 378
阅读 2
收藏 0
    #define预处理命令
#define ABC 10 //将代码中出现 ABC 的地方 换成 10
缺点:1、定义的常量 ABC 没有类型信息;
     2、如果其他文件引入了这个头文件,如果有 ABC 也会被替换掉

   类型常量
static const NSInteger ABC 10 
定义一个类型为 NSInteger 的 变量 ABC ,值为10;

注意:
1、如果不打算公开某个类型常量,最好定义在实现文件里面。
2、变量一定要用 static const 声明,如果程序中修改了 static const 声明的变量,编译器会报错。
3、用 static const  声明的变量,编译器不会创建符号,会像#define预处理指令一样,把所有遇到的变量替换成常量。

如果需要在其他文件中使用类型常量,需要创建一个外界可见的常值变量,这类常量会放到全局符号表中。
定义方式: 
头文件中声明: extern NSString *const ABC;
实现文件定义: NSString *const ABC = @"value" 
常量定义应该从右向左解读,extern NSString *const ABC ————> ABC是一个常量, 这个常量是一个指针

实验了下,以下两种声明方式都可以
extern NSString *const ABC; 和  extern const NSString *ABC; 
NSString *const ABC = @"value"  和 const  NSString *ABC = @"value" 


定义其他常量
头文件中声明: extern const NSInteger ABC;
实现文件定义: const NSInteger const ABC = 10 

 

网上找了一个帖子,里面说的更详细

https://my.oschina.net/mexiaobai1315/blog/833172

© 著作权归作者所有

共有 人打赏支持
xiaobai1315
粉丝 3
博文 203
码字总数 63303
作品 0
程序员
私信 提问
《Effective Objective-C 2.0》读书笔记(一)

1、了解Objective-C的起源 Objective-C与C++、Java等面向对象语言类似,不过很多方面有所差别。Objective-C使用了“消息结构”(messaging structure)而非“函数调用”(function calling)...

习惯有你syh
2017/12/07
0
0
iOS 面试题之#define 与 static 的取舍

前几天面试中的一道题目吧,记起来了就写出来了。这道题,不能算是iOS的面试题,应该算是基础。 编写代码时通常要定义常量有哪几种方式? 我只想到了#define xx xxx 因为常用 =======...

萨斯辈的呼唤
2014/09/14
0
2
《Effective Objective-C 2.0》读书笔记

思维导图.png 前言 好长时间没有更新了,年后把《Effective Objective-C 2.0》这本书看完了,上面👆是用思维导图画出来的整本书的内容。下面把书中一些重要的和难理解的知识点整理一下,不...

_誌念
03/25
0
0
《Effective Objective-C 2.0》笔记

1 了解 Objective-C 起源 Objective-C 使用“消息结构”而非“函数调用”。 使用“消息结构”的语言,其运行时所执行的代码由运行环境来决定。 使用“函数调用”的语言,则由编译器决定。 分...

JiandanDream
05/11
0
0
《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》笔记

这本书很早有了解过,评价都不错,但最近才终于把这本书看完,整本书介绍了很多个提高Objective-C的方法,都是平时用得很多但是没有注意使用的,下面对这些方法做一些小总结。 第1章 熟悉Objec...

TouchMing
01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

结合Spring和Groovy解决脚本热加载

前言 去年写过一篇文件介绍了采用jpython解决动态配置热加载的问题jpython解决热加载,今年在实现规则引擎过程中准备进行升级,采用groovy脚本解决。 方案 将一些规则相关,如统计,排序,过...

春哥大魔王的博客
6分钟前
0
0
以太坊应用开发接口:JSON RPC API

以太坊应用开发接口指的是以太坊节点软件提供的API接口,去中心化应用可以利用这个接口访问以太坊上的智能合约。以太坊应用开发接口采用JSON-PRC标准,通常是通过HTTP或websocket提供给应用程...

汇智网教程
10分钟前
0
0
排序--二分插入排序

二分插入排序是对直接插入排序的一个优化,在排序--直接插入排序中已经分析过直接插入排序的最坏时间复杂度是平方级别的,二分插入排序则是通过二分查找对寻找插入位置进行了优化,在找到插入...

FAT_mt
20分钟前
1
0
Quora点赞过万!麻省理工5.0GPA十条学习技巧

美国版知乎Quora上有个问题是:顶尖学生如何学习。排名第一的答案已经赢得13.5K次点赞,我们翻译出来分享给大家。 MIT normally does not rank its students. So if you hear that someone g...

乔老哥
34分钟前
1
0
IOC的学习(1)

1.IOC理论概要 java中,一个对象A怎么才能调用对象B? 当一个对象的构建,需要多个其他对象时,对象和对象有复杂的构建关系。spring帮助我们维系对象的依赖关系,降低系统的实现成本,前提是...

杨健-YJ
46分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部