文档章节

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

xiaobai1315
 xiaobai1315
发布于 2017/02/07 11:12
字数 378
阅读 1
收藏 0
点赞 0
评论 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
博文 194
码字总数 80097
作品 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
2.1 Objective-C概述

第2章 Objective-C语言基础 iOS的项目中主要采用Objective-C语言编写,因此在开始讲解具体项目之前,本章将介绍Objective-C语言基础。本章重点如下: Objective-C与iOS开发 数据类型和表达式...

长平狐
2013/03/19
121
0
Effective objective-C 读书笔记 (第一部分)

第1章 熟悉Objective-C 第1条 了解Objective-C语言的起源 Objective-C是一种“消息结构”的语言,而非“函数调用”语言。 关键区别在于:使用消息结构的语言,其运行时所执行的代码由运行环境...

shenglanya
2017/12/05
0
0
Effective OC : 1-5

1,了解Objective-C语言的起源: OC为C语言的超集,为C加入了面向对象的特性。 要理解C中的指针和内存模型。 2.在类文件里尽量少引入其它头文件: 引入过多头文件。将借口暴露,添加耦合度。这...

技术mix呢
2017/10/11
0
0
iOS开发细节 | 通知怎么写?

iu 前言 工作的这一年多时间里我见识了各种通知的写法,今天总结一下。 第一种: 最纯粹的,如: 第二种: 在PCH文件中写宏,如: 第三种: 写在.h文件中,如: 第四种: 在.m中定义并且在....

无夜之星辰
2017/11/23
0
0
Objective-C 程序设计(第四版)复习摘要(上)

在进一步学习《Effective Objective-C 2.0》之前,把《Objective-C 程序设计 2.0(第四 版)》一字不漏的刷了一遍~ 下面列出了之前初次学习遗漏或者很重要的知识点。(很基础哈~,高手勿喷)...

Herbert77
2015/09/02
25
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)

一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2、选安装目录进...

sprouting
13分钟前
0
0
Redisson

了解了Redisson,发现使用挺简单的,接下来准备深入学习一下。 Redisson介绍 Redisson是架设于Redis基础之上的一个Java驻内存数据网格(In-Memory Data Grid) Redisson在基于NIO的Netty框架上...

to_ln
13分钟前
0
0
python有哪些好玩的应用实现,用python爬虫做一个二维码生成器

python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询、cmd版的实时翻译、快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给...

python玩家
13分钟前
0
0
jq 判断复选框是否被选中,复选框后台接收

1. 效果 2. 代码 html部分: JS部分: var rememberLogin = $("#rememberLoginId").is(':checked')//获取复选框是否被选中 var rememberLoginval = $("#rememberLoginId").attr('value')//拿......

Lucky_Me
20分钟前
0
0
python爬虫日志(3)-爬去异步加载网页

在浏览器检查元素页面中,选取Network中的XHR选项即可观察每次加载页面,网页发出的请求,观察url的规律即可利用封装的函数对每一页进行爬取。

茫羽行
21分钟前
0
0
《趣谈网络协议》之为什么要学习网络协议?

一、协议 1.协议的定义 简单说协议就是一个规则,保证沟通交流双方可以互相听懂、理解或者可以双方合作可以顺利进行的一个约定和规则。 2.生活中例子 (1)有一种叫“程序猿”的物种,敲着一种...

aibinxiao
22分钟前
1
0
Python数据分析numpy基础-维度的认识

什么是多维数组? 核心对象是同型的多维数组(简单理解就是一个表格,通常内容都是些数字),具有相同的数据类型。 概念: 1. axes(轴):数组的维度统称为轴。 2. rank:轴的数量称为rank。...

十年磨一剑3344
26分钟前
0
0
Java 正则表达式相关资料

1.java正则表达式过滤html标签

IT追寻者
30分钟前
0
0
点赞出现数字变大效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .container{ padding: 50px; border: 1px solid #dddddd; } .item{ position: relative; } ......

南桥北木
48分钟前
0
0
anroid中批量将px转换成dp

package com.qu;import java.io.File;import java.io.FileWriter;import java.io.IOException;public class Aaaa {public static void main(String[] args) {String fi......

android-key
49分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部