文档章节

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
博文 199
码字总数 60377
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

Java Lock接口分析之ReentantReadWriteLock

ReentantReadWriteLock读写锁,在读线程多余写线程的并发环境中能体现出优异的性能,相比于synchronized与ReentrantLock这种独占式锁的模型,ReentantReadWriteLock采用独占式写锁与共享式读...

我爱春天的毛毛雨
34分钟前
1
0
EFK (Fluentd ElasticSearch Kibana) 采集nginx日志

本文描述如何通过FEK组合集中化nginx的访问日志。本人更喜欢按顺序来命名,所以使用FEK而不是EFK. 首先在nginx服务器上执行以下操作. 安装ruby http://blog.csdn.net/chenhaifeng2016/artic...

xiaomin0322
35分钟前
1
0
一键下载:将知乎专栏导出成电子书

老是有同学问,学了 Python 基础后不知道可以做点什么来提高。今天就再用个小例子,给大家讲讲,通过 Python 和爬虫,可以完成怎样的小工具。 在知乎上,你一定关注了一些不错的专栏(比如 ...

crossin
44分钟前
2
0
synchronized 之 对象锁 和 类锁

一、synchronized(object) 如果object没有被加锁,则获取object的锁;如果object已经被加锁则等待object的锁被释放。 二、需要加锁的情景 多线程共享同一资源会引起线程安全的情况下,才需要...

MyOldTime
46分钟前
7
0
tomcat 单机/多机 部署多应用

一.单机部署多应用: 1.在 linux 下解压安装两个 tomcat:tomcat1, tomcat2; 2.修改 /etc/profile, 增加 tomcat 环境变量: path 中加上 重新加载配置文件 source /etc/profile 3.修改 tomc...

imbiao
57分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部