Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Xcode变量类型的最佳编码实践?_Objective C_Xcode_Coding Style - Fatal编程技术网

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

Objective c Xcode变量类型的最佳编码实践?,objective-c,xcode,coding-style,Objective C,Xcode,Coding Style,我只是浏览了一下我的代码,想知道xcode中obj.c的标准。我们有所有这些NS(插入对象类型),它们与原始的C、C++对象重叠。我想澄清代码片段的不同替代方案。甚至比解释每一个更好的方法是链接到包含所有这些内容的指南或参考资料 object.property=blah或[对象setProperty:blah] float-aFloat=0.01(或double)或CGFloat aFloat=0.01 int-anInt=1或NSInteger-anInt=1 @“%d”,anInt或@“%i

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

object.property=blah
[对象setProperty:blah]
float-aFloat=0.01(或
double
)或
CGFloat aFloat=0.01

int-anInt=1
NSInteger-anInt=1

@“%d”,anInt
@“%i”,anInt

谢谢,第一个(点符号与方法调用)纯粹是一种品味
manprintf
%d
%i
都是有符号小数的占位符,因此ObjC作为C的严格超集不会改变它们的含义

带有
NS
CG
前缀的类型依赖于平台,实际上是从标准C类型中派生出来的
typedef
。如果您决定使用NS/CG类型为不同的平台(比如32/64位)编译,则会退回到您正在编译的平台的默认类型。例如
NSInteger
(来自NSObjCRuntime.h的代码片段):

它表明,如果您不是为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-ish而不是C-ish。

Xcode没有变量类型——这是一个理想的选择,感谢您的解释。我可能会开始始终如一地使用NS/CG变量类型,这样我的代码看起来“ObjC ish”:D。
id possiblyView = [someObject someView];
// the following line will give compile warning
possiblyView.frame
// the following line won't
[possiblyView frame];