在C中隐藏@property

hide @property in objective C

如何在某些类中隐藏@property(retain,nonatomic)nsstring*str?


如果要隐藏它使其在.h文件中不可见,请考虑在.m文件中使用私有类扩展名:

1
2
3
4
5
@interface YourClass ()

@property(retain, nonatomic)NSString*str;

@end

您可以使用一个名为"categories"的特性,它允许您通过向现有类添加属性和方法来扩展该类。

通常,在类的.m文件中使用空类别作为私有方法和属性,并在外部.h文件中为受保护的成员定义单独的命名类别。类别实际上非常有趣,因为它们允许您覆盖现有的属性。例如,您可以在.h文件中将属性定义为只读:

1
2
3
4
5
6
7
@interface Whatever {
    NSObject *aValue;
}

@property (nonatomic,retain,readonly) NSObject *aValue;

@end

然后,您可以在.m文件中的一个空类别中,使其读/写以供您自己使用:

1
2
3
@interface Whatever()
  @property (nonatomic,retain) NSObject *aValue;
@end

您可以在这里找到更多关于类别的信息。