【问题标题】:What's the correct way to declare a __block variable?声明 __block 变量的正确方法是什么?
【发布时间】:2014-05-08 10:33:57
【问题描述】:

我应该将其声明为

(#1)ClassName * __block variableName

(#2)__block ClassName * variableName

?

我看到很多代码使用格式 #2,包括 Apple 的 Blocks Programming Topics

但最近我发现苹果的“Transitioning to ARC Release Notes”说:

你应该正确地装饰变量。在对象变量声明中使用限定符时,正确的格式是:

ClassName * qualifier variableName;

例如:

MyClass * __weak myWeakReference;

其他变体在技术上是不正确的,但已被编译器“原谅”。要了解该问题,请参阅http://cdecl.org/

所以我很困惑,我以后应该使用哪种格式?

【问题讨论】:

  • 我觉得苹果的注释已经很清楚了。 #2 是正确的,但编译器允许您使用 #1(因为每个人都在使用 #1)。就像 C/C++ 中的 const int *int const *
  • @BryanChen 你的数字搞错了吗? Apple 的文档说你可以使用 #2,但说 #1 确实是正确的方法,正如他在帖子中引用的那样。
  • @DanZimm 你是对的。不幸的是我无法编辑它...

标签: ios objective-c variables syntax


【解决方案1】:

它们本质上是相同的。我个人更喜欢将__block 放在开头,因为它比变量的类型更重要

【讨论】:

    猜你喜欢
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多