【问题标题】:Best coding practice for Xcode variable types?Xcode 变量类型的最佳编码实践?
【发布时间】:2011-06-28 11:36:23
【问题描述】:

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

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

谢谢

【问题讨论】:

  • Xcode 没有变量类型——它是一个 IDE

标签: objective-c xcode coding-style


【解决方案1】:

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

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

#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 类型结构下查找 frame 变量。

而且我总是尝试使用 NS/CG 变量类型,因为它们使代码看起来更像 ObjC 风格而不是 C 风格。

【讨论】:

  • 感谢您的解释。我可能会开始始终使用 NS/CG 变量类型,所以我的代码看起来像“ObjC-ish”:D。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2019-07-12
  • 2014-07-31
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2021-11-26
相关资源
最近更新 更多