私有实例变量 - iPhone SDK

时间:2010-10-03 17:44:31

标签: iphone objective-c

我的iPhone应用程序中有一些变量作为类实例变量(它们需要是因为它们在该类的多个方法中使用。

但是,我不希望它们暴露给父类。我看过@private关键字,但我不确定这是否合适。

有没有人如何将实例变量保持为类的私有?

这可能也是一个Objective-C问题,并不一定特定于iphone。

非常感谢, 布雷特

3 个答案:

答案 0 :(得分:1)

@private 让你的意图清晰,是最佳选择。

修改

@interface YourClass : NSObject {
@private
    int privateData;
@public
    int publicData;
}

// method declarations....

@end

答案 1 :(得分:0)

@private指令意味着实例变量只能在声明它的类中访问。如果希望子类可以访问实例变量,请使用@protected指令。当你说你不希望你的实例变量暴露给类时,我不确定你的意思,但我很确定@private是你想要的。

您可以使用如下指令:

@interface MyClass : NSObject {
@private
    float privateFloat;
    float anotherPrivateFloat;
@protected
    float protectedFloat;
@public
    float publicFloat;
}

实例变量的默认范围受到保护。

答案 2 :(得分:0)

在Objective C中,类实例变量(假设您的意思是可以在一个对象中设置并在同一个类的另一个对象中读取)与普通ANSI C中的静态全局变量相同(假设您放置了一个类实现)在一个.m文件中。)

静态全局变量不会暴露给包含这些类实例变量的实现文件之外的任何其他类(超级,子,外来等)或代码。

此处其他答案中的@private声明很可能是不正确的(取决于您的术语的含义),因为这些实例变量不具有类范围的范围,但对每个单独的对象都是私有的(除非暴露)由财产)。