oc 正确定义Objective-C常量
来源:互联网 发布:无主之地2优化 编辑:程序博客网 时间:2024/05/22 01:57
本文由 Migrant 翻译自 Correct Way of Defining Constants in Objective-C,转载请注明出处。
本文只是一个关于如何在Cocoa代码中定义常量的书签贴,答案来自于stackoverflow.com的这个问题。这里为那些懒人提供了一些简短的介绍和帖子本身。你可能读遍了苹果开发者文档,知道一些特定的方法参数只能接受定义为常量的枚举值列表。比如事件类型标记(NSKeyUpMask
,NSKeyDownMask
,等等),persistent store coordinator的存储类型(NSSQLiteStoreType
,NSBinaryStoreType
和NSInMemoryStoreType
),当然还有很多其他的。所有的这些归结为几行代码。实际上定义常量的时候代码行数是你想要的常量的两倍。步骤为:首先,创建Constants.h
和Constants.m
文件用来存放我们的常量。在Constants.h
中,指定常量名字,将常量声明为一个指向NSString
对象的指针:
// Constants.hextern NSString * const MyOwnConstant;extern NSString * const YetAnotherConstant;
最后,在Constants.m
中通过赋值定义常量:
// Constants.mNSString * const MyOwnConstant = @"myOwnConstant";NSString * const YetAnotherConstant = @"yetAnotherConstant";
现在你所需要做的只是引入Constants.h
文件到你工程的预编译头文件。如果你有点小聪明,可能脑中会有两个问题。第一个问题或许是:在能够使用#define
的情况下为什么要使用这种方法?这是个非常有意义的问题。答案很简单(但是在读到这个答案之前还不是很明显) — 使用这种方法你可以进行指针比较(@"myString" == MyConstant
)而不是字符串比较([@"myString" isEqualToString:MyConstant]
)。前者非常非常快。第二个问题应该是为什么应该完全使用常量。又一个有意义的问题。你可以在每个使用常量的地方使用常量对应的值。但是有两个”但是”。第一,始终有人的因素。你很容易输入错字符串,而编译器并不会抱怨你的语法。但如果使用常量,它就会在你输入错常量名称的时候给予你警告。还有(第二个”但是”),XCode会尽最大努力的帮助我们自动完成代码,这些常量也不例外,因此方法会变得非常方便。Happy coding!
如有c或者c++混合的话使用FOUNDATION_EXPORT 来代替 extern
转载自:http://blog.csdn.net/chowpan/article/details/25061839
- oc 正确定义Objective-C常量
- 正确定义Objective-C常量
- 正确定义Objective-C常量
- Objective-C static定义常量和变量总结
- 【Objective-C】OC基础
- [Objective-c] OC介绍
- [C++]常量定义
- C语言定义常量
- 【C++】定义常量
- Objective-C中的常量定义方法、C中static 对全局变量extern的限制
- 关于Objective-C的常量
- Objective-C 常量的设置
- objective-c宏定义
- objective-c宏定义
- objective-c宏定义
- objective-c宏定义
- objective-c宏定义
- objective-c宏定义
- javascript 中new的含义
- 实用网址搜集
- Android 反编译apk 到java源码的方法
- SQL语句中IN的用法
- Flex中设置Camera的视频清晰质量的最佳配合
- oc 正确定义Objective-C常量
- [原理分析]Linux下的栈溢出案例分析-GDB调试操练[2]
- ROS_LABVIEW
- 服务窗开发
- web、ftp上传区别
- ssh拒绝密码问题
- android 短信验证倒计时功能
- IQMath是什么 浮点转定点运算,dsp
- 撒的谎个离开户口三大个好可怜