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 |
您可以在这里找到更多关于类别的信息。