例如:
[[FlyoutTableViewController alloc] initWithViewControllers:@[@[firstNavigationController],@[secondNavigationController]]];
- (id)initWithViewControllers:(NSArray *)viewControllers
我知道它正在向initWithViewControllers发送这些视图控制器的NSArray,但我想知道更多关于这种创建数组的方法。什么是好处,任何潜在的问题等?
另外,对象,firstNavigationController和secondNavigationController是否需要在@ [或者那里,或者那里发生了什么?
TIA
答案 0 :(得分:0)
@[item1, item2, item3]
是[NSArray arrayWithObjects:item1, item2, item3, nil]
的语法糖。只不过是速记。没有比它扩展到的方法更多的好处或问题。
你可以像这样制作数组数组。 @ [@ [item1]]是一个包含单个数组的数组,包含item1。
答案 1 :(得分:0)
这意味着您正在使用值定义数组。 e.g。
@[value1, value2, value3]
答案 2 :(得分:0)
这是一个数组文字。就像一个字符串文字@"My String"
。用于创建数组的简写表示法。 NSString
版本(不可变)的类似用法和限制。
因此,@[firstNavigationController]
会创建一个NSArray
,其中包含一个项目。你的参数是一个数组数组。
答案 3 :(得分:0)
这是创建NSArray的简便方法。
NSArray *array = [[NSArray alloc] init];
相当于
NSArray *array = @[];
您可以看到更多objective-c文字here。
答案 4 :(得分:0)
让我给你一个类比。
"A String"
:C-string
@"A String"
:Obj-C字符串(NSString
)
{1,2}
(不是[1,2]
):C数组
@[@1, @2]
(不是@[1,2]
):Obj-C数组(NSArray with NSNumber elements
)