【问题标题】:What does it mean to have curly brackets inside method? [duplicate]方法内部有大括号是什么意思? [复制]
【发布时间】:2013-12-27 16:30:32
【问题描述】:

我正在阅读 Github 上的代码示例,我看到了一些我想了解它是如何工作的内容。

代码类似于:

- (void)viewDidLoad
{
    [super viewDidLoad];

    {
        self.formatter = [[NSDateFormatter alloc] init];
        [self.formatter setDateFormat:[NSDateFormatter dateFormatFromTemplate:@"yyyyMMMd" options:0 locale:[NSLocale currentLocale]]];
    }

}

这是什么意思?它与代码部分的异步执行有关吗? 有人启发我吗?

【问题讨论】:

  • 可以在任何一组完整语句周围插入{...}。这意味着在该区域中声明的任何自动变量都不能“转义”并在外部引用。否则,它没有效果。在上面我怀疑曾经有一个if 语句或一些这样的“保护”两个封闭的语句,当if 语句被删除时,大括号只是留在那里。
  • 这应该是正确答案@HotLicks ;)
  • 是的,我看错了。如果你想将变量放在 switch 语句中而不会让它发生在你身上,你也可以使用它们。
  • 看到这个问题link

标签: ios objective-c methods brackets


【解决方案1】:

你说的是括号。您是在谈论花括号吗? “{”和“}”。

花括号定义了一个局部范围。它可以简单地用于代码可读性,也可以使用它来限制局部变量的范围:

- (void)viewDidLoad
{
  [super viewDidLoad];
  {
    //local variables inside these braces are only defined inside this set of braces
    NSString *scratchString;
    int count = 1;
    scratchString = @"foo";
  }

  {
    //The string scratchString below is a different local variable than
    //The one defined above.
    NSString *scratchString;
    int count = 5;
    scratchString = @"bar";
  }
}

【讨论】:

  • 您能否还给我们举一个简短的场景,在这种场景中使用大括号是非常受欢迎的?谢谢。
  • @Unheiling 他提供了一个示例用法,其中可以使用大括号来限制变量的范围。这种方法是否被高度推荐是非常主观的。
  • 谢谢邓肯,在这种情况下,更合理的答案是你的。我认为这是一种在不使用本地范围更改变量名称的情况下复制代码的方法。我认为目标 c 可能会有所不同。
  • 调试执行代码我注意到大括号内的代码是在方法结束后独立执行的。所以我认为它在某些情况下可能有用。
  • @tylyo,您的示例中大括号({})中的代码将在大括号下方的行之后执行是没有意义的。这对于使用dispatch_asyncdispatch_after 调用的闭包可能是正确的,但花括号不会改变执行顺序。正如@HotLicks 在他的评论中所暗示的那样,这种情况下的大括号可能是一个遗留物,在大括号上方曾经有一个if 语句(或类似语句),但它被删除了,程序员没有删除大括号。跨度>
【解决方案2】:

[] 是目标 C 通过消息进行通信的方式。如果它是一个函数,它会慢一点。

【讨论】:

  • 我猜 OP 说的是 { }
  • 是的,确实如此。
【解决方案3】:

这些括号是Objective C 方法调用语法。

实例方法调用的基本语法是

[target_object message_name];

如果消息带参数:

[target_object message_name: parameter];

我建议阅读有关 Objective C 语言的书。

【讨论】:

  • 我猜OP在说{}
猜你喜欢
  • 2014-10-24
  • 2021-10-23
  • 1970-01-01
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
相关资源
最近更新 更多