关于iphone:奇怪的objective-c语法 – 方括号和@符号

Weird objective-c syntax - square brackets and @ sign

我在我的一个项目中使用ghsidebarnav,我遇到了分配对象数组的代码。我只是不知道它在做什么。它只是一个数组吗?这个奇怪的@[...]语法是什么?我以前没见过:

1
2
3
4
5
6
7
8
9
10
11
12
NSArray *controllers = @[
    @[
        [[UINavigationController alloc] initWithRootViewController:[[GHRootViewController alloc] initWithTitle:@"Profile" withRevealBlock:revealBlock]]
    ],
    @[
        [[UINavigationController alloc] initWithRootViewController:[[GHRootViewController alloc] initWithTitle:@"News Feed" withRevealBlock:revealBlock]],
        [[UINavigationController alloc] initWithRootViewController:[[GHMessagesViewController alloc] initWithTitle:@"Messages" withRevealBlock:revealBlock]],
        [[UINavigationController alloc] initWithRootViewController:[[GHRootViewController alloc] initWithTitle:@"Nearby" withRevealBlock:revealBlock]],
        [[UINavigationController alloc] initWithRootViewController:[[GHRootViewController alloc] initWithTitle:@"Events" withRevealBlock:revealBlock]],
        [[UINavigationController alloc] initWithRootViewController:[[GHRootViewController alloc] initWithTitle:@"Friends" withRevealBlock:revealBlock]]
    ]
];


这些是数组文本,一种容器文本类型,在Xcode4.4和更高版本中可用。

见:

  • 目标C编程中数组讨论的"字面语法"部分
  • 在LLVM站点进行客观的文字讨论
  • WWDC 2012现代目标C,大约19-20分钟
  • WWDC 2012迁移到现代目标-C


这是一个新的目标C字面值,它声明多维数组。

它正在取代[NSArray arrayWithObjects:[NSArray arrayWithObjects:...], [NSArray arrayWithObjects:..]]];