【问题标题】:Block Syntax Objective C块语法目标 C
【发布时间】:2012-07-01 11:27:03
【问题描述】:

我刚刚从another answer 读到这个sn-p:

当您使用^{} 语法创建块时...

我理解这种语法,并且经常使用它,但是我由此推断可能还有其他语法可用于创建块。在那里?如果有,不同的语法有什么优点吗?

【问题讨论】:

    标签: ios objective-c c syntax objective-c-blocks


    【解决方案1】:

    如果您的问题是关于块文字语法(用于匿名函数的语法),这里是一般形式

    ^ 返回类型(参数列表){表达式}

    基于此,您可以省略返回类型

    ^(参数列表){表达式}

    因为它可以从返回类型中推断出来。如果没有返回值,则选择void

    另外,你可以写

    ^ {表达式}

    如果没有参数。

    这是一样的

    ^ void (void) { NSLog(@"Something"); }
    

    【讨论】:

    • 为什么我有时会看到 type 在 ^ 之前?
    • 对不起,我的错。 “类型”是指“返回类型”。我阅读了过去几个小时来弄清楚块语法。据我所知,块声明和块文字遵循不同的语法?在声明中,它是returnType (^blockName)(argTypeList),而在字面上,它是^(returnType)(argList){body}?
    • @Philip007 是的,如果您使用 typedef 进行声明。有关更多信息,我建议使用此链接:yannickloriot.com/2011/11/working-with-blocks。附言如果您觉得它有用,也请点赞;)
    • 感谢您的链接,备忘单很棒。但我不同意你所说的关于 typedef 的说法。我认为块声明可以在没有 typedef 的情况下存在
    • 据我今天所知,块通常在没有声明的情况下使用(也称为内联)。在多个地方使用相同块的情况下,使用 typedef 使代码看起来更漂亮。我希望我做对了..
    【解决方案2】:

    通过查看here,我认为唯一的区别是您是否使用返回类型/参数

    【讨论】:

    • 这是我正在寻找的简明答案。
    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    相关资源
    最近更新 更多