[Effective Objective-C 读书笔记] 第1章 几条基本写法 (2~5条)
我的技术博客经常被流氓网站恶意爬取转载。请移步原文:http://www.cnblogs.com/hamhog/p/3575599.html,享受整齐的排版、有效的链接、正确的代码缩进、更好的阅读体验。
第2条:在类的头文件中尽量少引入头文件
1. 常规情况:
在.h文件中:(写在@interface之前)
@class SomeClass;
在.m文件中:
#import "SomeClass.h"
2. 必须在.h中引入头文件的情况:
- 类继承某个超类
- 类实现某个协议
第3条:尽量使用“字面量语法(literal syntax)”
- 要用:
NSNumber* intNumber = @;
NSNumber* floatNumber = @5.2f;
NSNumber* doubleNumber = @5.27413;
NSNumber* expressionNumber = @(x*y);不要用:
NSNumber* someNumber = [NSNumber numberWithInt:];
- 要用:
NSArray* animals = @[@"hamster", @"dog", @"cat"];
NSString* hamster = animals[]; NSMutableArray* mutableArray = [@[@"hamster", @"dog", @"cat"]mutableCopy];
mutableArray[] = @"hamster";不要用:
NSArray* animals = [NSArray arrayWithObjects:@"hamster",@"cat",@"dog", nil];
NSString* hamster = [animals objectAtIndex:]; - 要用:
NSDictionary* animalData =
@{@"name" : @"Tom",
@"age" : @}; NSString* name = animalData[@"name"];
animalData[@"name"] = @"Jerry";
第4条:定义常量少用#define
1. 只在这个类内部使用
在.m文件中:(写在@implementaion之前)
static const double kSomeNumberConstant = 5.274;
static NSString* const kSomeStringConstant = @"hamster";
加字母k作为前缀。
2. 可能在类之外使用
在.h文件中:(写在@interface之前)
extern NSString* const HAMMyClassSomeStringConstant;
在.m文件中:(写在@implementation之前)
NSString* const HAMMyClassSomeStringConstant = @"hamster";
加类名作为前缀。
第5条:使用枚举类型
1. 写法——单独使用
定义:
enum HAMAnimalState : NSInteger {
HAMAnimalStateSleeping,
HAMAnimalStateEating,
HAMAnimalStateDoingNothing,
};
typedef enum HAMAnimalState HAMAnimalState;
其中指定类型的 : NSInteger 可加可不加。加了的可以前向声明。
使用:
HAMAnimalState state = HAMAnimalStateSleeping;
2. 写法——组合使用
定义:
enum HAMAnimalAbility {
HAMAnimalAbilityNone = ,
HAMAnimalAbilitySing = << ,
HAMAnimalAbilityDance = << ,
HAMAnimalAbilityTalk = << ,
HAMAnimalAbilityRun = << ,
}
typedef enum HAMAnimalAbility HAMAnimalAbility;
使用:
//ability to both sing and dance
HAMAnimalAbility ability = HAMAnimalAbilitySing | HAMAnimalAbilityDance;
if (ability & HAMAnimalAbilitySing){
//has ability to sing
}
3. 适合使用枚举类型的场合
- 某个对象的各种状态,如StateDisconnected, StateConnecting, StateConnected
- 表示选项(可能多选),如PermittedDirectionUp, PermittedDirectionDown, PermittedDirectionLeft
- 状态码
- 样式,如某个UI元素的不同样式
4. switch枚举类型时,不要加default:分支
[Effective Objective-C 读书笔记] 第1章 几条基本写法 (2~5条)的更多相关文章
- [Effective Java 读书笔记] 第三章类和接口 第十六条
第十六条 复合优先于继承 如果不确定B和A的关系是,is-a的关系,B确实也是A,那么久不应该使用B继承A,否则会暴露实现细节, 你的实现都会限制在原始的实现上. 书中举的第一个例子,实现了一个类ex ...
- [.NET] 《Effective C#》读书笔记(二)- .NET 资源托管
<Effective C#>读书笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内 ...
- 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度
<Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...
- 《Linux内核设计与分析》第六周读书笔记——第三章
<Linux内核设计与实现>第六周读书笔记——第三章 20135301张忻估算学习时间:共2.5小时读书:2.0代码:0作业:0博客:0.5实际学习时间:共3.0小时读书:2.0代码:0作 ...
- 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度
20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...
- 《Linux内核分析》读书笔记(四章)
<Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...
- 《LINUX内核设计与实现》第三周读书笔记——第一二章
<Linux内核设计与实现>读书笔记--第一二章 20135301张忻 估算学习时间:共2小时 读书:1.5 代码:0 作业:0 博客:0.5 实际学习时间:共2.5小时 读书:2.0 代 ...
- 《Linux内核设计与实现》第四周读书笔记——第五章
<Linux内核设计与实现>第四周读书笔记--第五章 20135301张忻 估算学习时间:共1.5小时 读书:1.0 代码:0 作业:0 博客:0.5 实际学习时间:共2.0小时 读书:1 ...
- 《Linux内核设计与实现》第五周读书笔记——第十一章
<Linux内核设计与实现>第五周读书笔记——第十一章 20135301张忻 估算学习时间:共2.5小时 读书:2.0 代码:0 作业:0 博客:0.5 实际学习时间:共3.0小时 读书: ...
- 《Linux内核设计与实现》读书笔记——第五章
<Linux内核设计与实现>读书笔记--第五章 标签(空格分隔): 20135321余佳源 第五章 系统调用 操作系统中,内核提供了用户进程与内核进行交互的一组接口.这些接口让应用程序受限 ...
随机推荐
- Visual Studio 2012 应用软件开发新方式
微软正式发布Visual Studio 2012 应用软件开发新方式 2012-09-13 09:54 51CTO.com 我要评论(0) 字号:T | T “现在,开发者将有更好的机会开发与云服务连 ...
- iOS动画详解(二)
UIImage常用的绘图操作 一个UIImage对象提供了向当前上下文绘制自身的方法.我们现在已经知道如何获取一个图片类型的上下文并将它转变成当前上下文. 平移操作:下面的代码展示了如何将UI ...
- 拼接json示例 json分页并显示所有页码
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%&g ...
- BAE3.0还不支持本地写入文件
BAE3.0对比2.0做了很大的改动,对于安装应用方面也方便了很多,普通的应用表面上(下文就是讲为什么说表面上)不需要做什么适配.比如wp博客,直接修改wp-config.php,把数据库信息填一下就 ...
- Tricks Device (hdu 5294 最短路+最大流)
Tricks Device Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) To ...
- W5500问题集锦(二)
attachment_id=5620" rel="attachment wp-att-5620" style="margin:0px; padding:0px; ...
- LetterView实现载入全国各地城市
近期更具eoe论坛上的letteView案例( eoe)自己做了一个LetterView载入全国城市的案例,欢迎大家互相学习和交流, 相对于eoe那个案例稍微修改了一下,利用json存储全国城市数 ...
- POJ_1365_Prime_Land
//懒得解释 #include <iostream> #include <cstring> #include <cmath> #include <cstdio ...
- Jordan Lecture Note-3: 梯度投影法
Jordan Lecture Note-3:梯度投影法 在这一节,我们介绍如何用梯度投影法来解如下的优化问题: \begin{align} \mathop{\min}&\quad f(x)\n ...
- Android 导入导出CSV,xls文件 .
1 . http://www.bangchui.org/read.php?tid=62 2 .http://blog.csdn.net/xinzheng_wang/article/details/77 ...