我已经#define在我的.m文件中使用了一段时间了,我最近发现它不是优选的,你应该使用它const.但是,有很多关于使用那些变化很大的信息的信息,我想确保我正确使用它们.
对于我#define的,我只是在我的.m中使用它们,因为我没有看到任何理由让它们公开.但在大多数情况下,似乎在.h中使用extern或FOUNDATION_EXPORT之前声明了.
在标题中这样做是好的做法吗?或者在实施中这样做是否可以?
还有static必要吗?
不const来的类型之前,像NSString * const或const NSString *?
是否有一个公认的标准,如何命名他们?似乎有很多相互矛盾的信念,因为有些人坚持使用前置k,有些人使用三个字母常量,有些人根本不使用,有些人使用骆驼案例,以大写字母开头.
如果它是公共的 - 类或模块接口的一部分 - 那么声明应该在标题中.但是,定义应该在实现中.
指定static给出符号内部链接.您应该将它用于私人符号,但不得将其用于公共符号.
NSString * const并const NSString *指两种不同的东西.第一个是指向a的常量指针NSString.第二个是指向常量的指针NSString.虽然它有点不直观,但你应该使用前者.
你肯定希望指针是恒定的.你不希望有人能够分配指针,使它指向不同的东西.
你可能也希望你也希望它也是NSString恒定的(即const NSString * const),但这不是一个好主意.首先,既然NSString已经不可变,那就没必要了.没有人能够改变NSString对象的内容.除此之外,a NSString可能仍会随着时间的推移改变其内部状态,而不会改变其价值.例如,它可能会缓存特定编码中的表示.(NSString文字实际上并没有这样做,但你不想排除它.)
至于命名约定,这是一个风格问题,而不是真正可以肯定回答的问题.
最后,对于整数常量,您应该考虑使用枚举而不是const变量.枚举的元件可以用作真实编译时间常数,如在case第switch语句.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |