我想在Objective C中为嵌套的私有类创建一个模式.
要求是:
考虑到这些意见,我正在简化要求:
它仍然不可能吗?
bbu*_*bum 86
Objective-C没有正式声明方式的私有类或私有实例变量的概念.
相反,Objective-C中的可见性完全由您声明某些内容的位置控制.如果它在头文件中,则可以通过其他内容导入.如果它在实现文件中声明,则不能(合理地)导入它,因此对该编译单元实际上是私有的.
而对于"它",我的意思是几乎所有可以宣布的东西; 班级,全球等...
即如果你@interface/@implementation在一个.m文件中为一个类添加一对,那么该类实际上是该编译单元的私有.当然,如果没有名称空间,请确保该类具有唯一名称.
考虑一下:
foo.h中:
@interface Foo: NSObject
... public interface
@end
Run Code Online (Sandbox Code Playgroud)
Foo.m:
@interface __FooSupportClass: NSObject
... interface here ...
@end
@implementation __FooSupportClass
@end
@interface Foo()
@property(retain) __FooSupportClass *__fooSupport;
@end
@implementation Foo
@synthesize __fooSupport = fooSupport__;
... etc ...
@end
Run Code Online (Sandbox Code Playgroud)
这为您提供了一个隐私可见的支持类,仅在您的实现中可用,您的类上的实例变量和setter/getter方法在编译单元外部也是不可见的.
(注意,Objective-C有"实例变量",而不是"成员变量".它们是相似的,但你最好使用该语言的词汇.)