【发布时间】:2014-06-25 10:38:09
【问题描述】:
在 Foundation、UIKit 和其他框架头文件中有多个 @private 实例变量示例。以下是一些示例:
//CLLocationManager.h
@interface CLLocationManager : NSObject
{
@private
id _internal;
}
<...>
//NSAutoreleasePool.h
@interface NSAutoreleasePool : NSObject {
@private
void *_token;
void *_reserved3;
void *_reserved2;
void *_reserved;
}
<...>
等等
这些实例变量是@private,因此除了类本身之外,无法从任何地方访问它们。在标题中公开它们有什么意义?
为什么不呢
//CLLocationManager.m
@interface CLLocationManager<>
{
id _internal;
}
甚至,考虑到现代的 Objective-C 语法:
//CLLocationManager.m
@interface CLLocationManager<>
@property(nonatomic, assign) id internal;
为什么苹果在头文件中使用私有实例变量,暴露类的内部而不是隐藏在实现中?
【问题讨论】:
标签: objective-c cocoa