【问题标题】:Do ivars have to be enclosed in curly braces?ivars 必须用花括号括起来吗?
【发布时间】:2014-04-26 22:21:28
【问题描述】:

实例变量必须用大括号括起来吗?还是只是约定俗成?

例如:

#import <Foundation/Foundation.h>    

@interface Person : NSObject
{
    NSString *name;
    int age;
}

【问题讨论】:

  • 我不明白你在这里写了什么。我在 Internet 上找到的 #import 指令示例如下所示:#import "Point.h" #import &lt;math.h&gt;
  • 你显然是指@interface而不是#import,对吧?
  • 是的,应该是@interface Person : NSObject {}

标签: objective-c instance-variables nsobject


【解决方案1】:

是的,大括号是声明实例变量所必需的。在 @interface 或 @implementation 行标记实例变量声明之后的花括号。如果你省略了大括号,你只是声明了全局变量。

【讨论】:

    【解决方案2】:

    花括号和封闭块用于声明 Objective-C 类的实例变量,并遵循 @interface 或 @implementation 声明。

    您可以在这些块之外声明变量,但它们将使用原始 C 语义。
    例如,Objective-C 有实例方法和类方法,但没有明确的类变量概念。
    您仍然可以使用具有 C 语义的类变量。

    static NSMutableArray *myClassList;
    
    @implementation Person
    {
        // this block is actually optional
    }
    
    // instance methods
    // ...
    
    @end
    

    【讨论】:

      猜你喜欢
      • 2019-07-11
      • 2018-12-18
      • 2022-01-07
      • 2018-02-26
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多