【问题标题】:objective-c variable declaration inside { } vs outside of @interface & @end{}内的objective-c变量声明与@interface和@end之外的变量声明
【发布时间】:2012-06-11 07:11:26
【问题描述】:

请任何人告诉我在 { } 内声明变量与在头文件中 @interface 和 @end 外声明变量有什么区别。两种方式都能成功编译。

【问题讨论】:

    标签: objective-c ios


    【解决方案1】:

    如果您希望变量成为类的一部分(也称为实例变量),则在括号内声明它,否则将其声明为与类无关的全局变量。

    例如

    // XYZ.h
    
    @interface XYZ
    {
      int myinstancevariable;
    }
    @end
    
    int myglobalvariable;
    

    ...

    XYZ* a = [[XYZ alloc] init];
    NSLog(@"%d", [a myinstancevariable]);
    NSLog(@"%d", myglobalvariable );
    

    编辑:忘记了{}

    【讨论】:

    • 感谢回复,现在Xcode默认不包含{}?
    【解决方案2】:

    如果您在 code block - {} 内声明变量,则其范围(寿命)仅在该块内。

    如果您在 @interface@end 之外声明它,则它的范围在该文件内。如果这是一个头文件,这个变量可以在全局范围内使用。

    【讨论】:

    • 感谢回复,现在Xcode默认不包含{}?
    • @rokjarc:ivar {} 块内变量的范围是类(我认为这就是你的意思,但说它只是在块内有点误导)。 Sweet Jenny:这可能是因为 Apple 现在鼓励使用属性而不是裸实例变量。
    • 是的,我想我有点误解了这个问题。答案的第一部分适用于代码块内的变量(即方法内部),另一部分适用于所有代码块之外以及@interface“块”之外的变量。
    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多