Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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
Iphone 在Objective-C中从未见过语法:打开/关闭大括号w/out方法/条件语句,目的是什么?_Iphone_Ios_Objective C_Cocoa Touch_Syntax - Fatal编程技术网

Iphone 在Objective-C中从未见过语法:打开/关闭大括号w/out方法/条件语句,目的是什么?

Iphone 在Objective-C中从未见过语法:打开/关闭大括号w/out方法/条件语句,目的是什么?,iphone,ios,objective-c,cocoa-touch,syntax,Iphone,Ios,Objective C,Cocoa Touch,Syntax,我正在查看我下载的一个Xcode项目,看到了我不熟悉的代码语法: 大括号不属于方法签名或任何其他条件语句,它们只是浮动在那里。这有什么意义?纯粹出于代码隔离/可读性的目的?这只是块范围;在C和C++中也是一样的。块内声明的任何变量在块外都不可访问。我通常在switch语句中使用它: switch(x) { case 1: { const char *s = "hi"; } break; case 2: { const char *s = "ho"; } break; // et

我正在查看我下载的一个Xcode项目,看到了我不熟悉的代码语法:


大括号不属于方法签名或任何其他条件语句,它们只是浮动在那里。这有什么意义?纯粹出于代码隔离/可读性的目的?

这只是块范围;在C和C++中也是一样的。块内声明的任何变量在块外都不可访问。我通常在
switch
语句中使用它:

switch(x) {
case 1: {
    const char *s = "hi";
}
break;
case 2: {
    const char *s = "ho";
}
break;
// etc.
}

请注意,有两个变量称为
s
,它们都不相互干扰,因为它们在各自的范围内。

遗留代码需要{}才能进行声明

在C89中,您不能只执行int i;在任何地方声明仅在块的开头有效

查看此项了解更多解释


大括号括起的范围内的声明将被限制在该范围内,因此
标签
图标
按钮
在其外部将不可见。因此,它提供的局部性通常被认为是好的。

您的意思是它在方法之外吗?不,此代码在方法之内。我对它为什么会出现感到困惑,但下面的答案是有意义的。有时我会使用这种风格对代码进行可视化分组,而不是出于任何语义目的。。。在switch语句中。我想我通常也在switch语句中使用它!不知道它可以在任何地方使用。谢谢你提供的信息。@Casper是的,你可以,正如你的问题所表明的,但对我来说,这并不常见。如果使用
if
语句,它也很常见