【问题标题】:What does @[ mean in objective C [duplicate]@[在目标C中是什么意思[重复]
【发布时间】:2014-01-31 10:09:23
【问题描述】:

例如:

[[FlyoutTableViewController alloc] initWithViewControllers:@[@[firstNavigationController],@[secondNavigationController]]];

- (id)initWithViewControllers:(NSArray *)viewControllers

我知道它将这些视图控制器的 NSArray 发送到 initWithViewControllers,但我想了解更多关于这种创建数组的方式。有什么好处,有什么潜在的问题等?

另外,对象 firstNavigationController 和 secondNavigationController 是否也需要在 @[ 中,或者那里发生了什么?

TIA

【问题讨论】:

    标签: objective-c nsarray


    【解决方案1】:

    这是一种创建 NSArray 的简写方式。

    NSArray *array = [[NSArray alloc] init];
    

    等价于

    NSArray *array = @[];
    

    你可以看到更多的objective-c字面量here

    【讨论】:

      【解决方案2】:

      @[item1, item2, item3][NSArray arrayWithObjects:item1, item2, item3, nil] 的语法糖。无非是简写。没有比它扩展到的方法更多的好处或问题。

      您也可以像这样制作数组数组。 @[@[item1]] 是一个数组,其中包含一个包含 item1 的数组。

      【讨论】:

      【解决方案3】:

      这意味着您正在定义一个带有值的数组。例如

      @[value1, value2, value3]
      

      【讨论】:

        【解决方案4】:

        这是一个数组字面量。就像字符串文字 @"My String"。创建数组的简写符号。与NSString 版本(不可变)类似的用法和限制。

        因此,@[firstNavigationController] 创建了一个 NSArray,其中包含一个项目。而你的参数是一个数组数组。

        【讨论】:

          【解决方案5】:

          让我给你打个比方。

          "A String" : C 字符串

          @"A String":Obj-C 字符串 (NSString)


          {1,2}(不是[1,2]):C 数组

          @[@1, @2](不是@[1,2]):Obj-C 数组(NSArray with NSNumber elements

          【讨论】:

          • 唯一的问题是整数不能在 NSArray 中。将@s 放在整数前面以包装它们。
          • 没错,不过我会保持原样,以便人们看到您的评论:)
          • C 数组的语法是 {1, 2} -- 花括号,而不是方括号。 [1,2] 无效。
          猜你喜欢
          • 2014-09-11
          • 1970-01-01
          • 1970-01-01
          • 2014-03-23
          • 2017-10-16
          • 2017-02-17
          • 2011-01-22
          • 1970-01-01
          相关资源
          最近更新 更多