双括号是什么意思?

卢瓦伦西亚

看一下Apple的示例代码iPhoneCoreDataRecipes,我对以下代码段有疑问RecipeDetailViewController.m

case TYPE_SECTION:
    nextViewController = [[TypeSelectionViewController alloc]
        initWithStyle:UITableViewStyleGrouped];
    ((TypeSelectionViewController *)nextViewController).recipe = recipe;
    break;

在这一行中((TypeSelectionViewController *)nextViewController).recipe = recipe,我了解到内部括号将类型转换为视图控制器TypeSelectionViewController,但是外部括号是做什么的?

眼球

这与操作的优先级有关。

如果您在此处查看,您会发现点符号的优先级高于强制转换。

所以这段代码:

(TypeSelectionViewController *)nextViewController.recipe

将由编译器转换为以下格式(因为点号表示法只是编译器的语法糖):

(TypeSelectionViewController *)[nextViewController recipe]

但是,我们希望将nextViewController零件转换为type TypeSelectionViewController *,而不是[nextViewController recipe]零件。所以这是不正确的。

因此,我们这样写:

((TypeSelectionViewController *)nextViewController).recipe 

编译器将其转换为此:

[(TypeSelectionViewController *)nextViewController recipe]

这就是我们想要的。

关于编译器与运行时行为的说明

如果编译此示例不正确的转换:

UILabel *label = [[UILabel alloc] init];
NSString *result = (UILabel *)label.text;

您将从编译器收到如下消息:

Warning: incompatible pointer types initializing 'NSString *' with an 
  expression of type 'UILabel *'

但是,由于目标C的类型较弱,因此代码在运行时可以正常运行。您可以在LLVM文档中阅读有关此内容的更多信息,例如:

在运行时不检查对象指针类型之间转换的有效性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

括号()本身是什么意思?

来自分类Dev

在Linux中,“ cd //”中的双斜杠//是什么意思?

来自分类Dev

Perl中的双'at'(@@)是什么意思?

来自分类Dev

c中的双分号是什么意思?

来自分类Dev

这里的双斜杠是什么意思?

来自分类Dev

双“&”号返回类型是什么意思?

来自分类Dev

bash / Makefile中的双美元符号是什么意思?

来自分类Dev

快速方括号是什么意思?

来自分类Dev

python中for循环中的[]方括号是什么意思?

来自分类Dev

ElectronJs:大括号“ {}”在包json中是什么意思

来自分类Dev

日志配置字典中的空括号“()”是什么意思?

来自分类Dev

::(双冒号)在JavaScript中是什么意思?

来自分类Dev

Laravel中的双冒号是什么意思

来自分类Dev

方括号在类型声明中是什么意思?

来自分类Dev

命令附近的括号中的数字是什么意思?

来自分类Dev

Julia编程语言中的双点(..)是什么意思?

来自分类Dev

在Scala中,双冒号(或冒号)::是什么意思?

来自分类Dev

双美元符号($$)是什么意思?

来自分类Dev

在此行中,双冒号是什么意思?

来自分类Dev

以双冒号为前缀的常量是什么意思?

来自分类Dev

这些花括号是什么意思?

来自分类Dev

围绕流程的括号是什么意思?

来自分类Dev

PHP中的双下划线是什么意思?

来自分类Dev

“-”(双破折号)是什么意思?

来自分类Dev

双大括号在systemd脚本中是什么意思?

来自分类Dev

$ {f // / __``中的双斜杠是什么意思?

来自分类Dev

在这种情况下,双括号是什么意思?

来自分类Dev

括号中的变量是什么意思?

来自分类Dev

JavaCC中的括号是什么意思?

Related 相关文章

热门标签

归档