2

这是我的问题。

假设我有一个名为 WebServiceBase.h 的类。我需要在名为 NSString *requestData 的类中添加一个 iVar。但我不需要将该 iVar 添加到头文件中并使其对外部人员可见。(如果我将其作为类库分发)

我还需要能够在从 WebServiceBase.h 扩展的其他类中访问这个 requestData iVar。(这些扩展类是我写的。不是来自外部的人)

我尝试在类扩展中声明 requestData iVar。但是它对扩展类不可见。

有什么解决办法吗?我需要保护我的数据并使其对外部世界隐藏。

4

4 回答 4

3

您可以通过关键字将您的 ivars 定义为受保护@protected,这意味着您的类和所有子类都可以毫无问题地访问它,但编译器不允许其他不从您的基类继承的类:

@interface Foo : NSObject
{
@protected
    NSObject *a;
}

它就这么简单,并且已经为您提供了从 Objective-C 可以获得的所有安全性。

于 2012-07-29T07:52:01.137 回答
1

您可以在 @implementation 块中有一个 ivar 定义块。

于 2012-07-29T07:31:41.880 回答
0

有2种方式,你可以选择你喜欢的一种。

    1).h file
    @interface YourClass
    {
    }

    .m file
    @interface YourClass ()
    @property (nonatomic, retain) NSString *title;
    @end

    @implementation YourClass

    @synthesize title;

    //your method


    2) .h flie 
    @interface YourClass
    {
    }

    .m file
    @implementation YourClass  
    {  
        NSString *title;   
    }  

//your method
于 2012-07-29T07:39:45.123 回答
0

声明一个在另一个 .h 文件中定义 ivar 的类扩展。称它为myclass-private.h. 然后在您的主类和子类中导入该标题。

于 2012-07-29T08:58:07.227 回答