Xcode变量类型的最佳编码实践?

时间:2011-06-28 11:36:24

标签: objective-c xcode coding-style

我只是查看我的代码并想知道xcode中obj.c的标准。我们有所有这些NS(插入对象类型)与原始的C,C ++对象重叠。我想澄清代码片段的不同替代方案。甚至比解释每一个更好的是指向包含所有这些的指南或参考的链接。

object.property = blah;[object setProperty:blah];
float aFloat = 0.01;(或double)或CGFloat aFloat = 0.01
int anInt = 1NSInteger anInt = 1
@"%d", anInt@"%i", anInt

由于

1 个答案:

答案 0 :(得分:2)

第一个(点符号与方法调用)纯粹是一种品味。 man printf表示%d%i都是带符号小数的占位符,因此ObjC是C的严格超集并不会改变它们的含义。

带有NSCG前缀的类型取决于平台,实际上是标准C类型的typedef。如果你决定使用NS / CG类型编译不同的平台(比如32/64位)将回退到你正在编译的平台的默认类型。例如NSInteger(来自NSObjCRuntime.h的片段):

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif

它表明如果你没有为iOS编译,NSInteger将代表long,否则 - 它将很简单int

个人意见

我总是使用%d因为我在一些ObjC教程中首先看到它。永远不要回顾其他占位符的整数(除非%lld)。只有在编译时知道接收器类型时才使用点表示法。有时你可能要写这个:

id possiblyView = [someObject someView];
// the following line will give compile warning
possiblyView.frame
// the following line won't
[possiblyView frame];

这些调用的结果是相同的,但第一行强制编译器在id-typed结构下查找frame变量。

我总是尝试使用NS / CG变量类型,因为它们使代码看起来比C-ish更像ObjC。