只是一个注释;为了安全而试图隐藏 iVar 是愚蠢的。不要打扰。
不过,为了简单起见,它是有价值的。
但是,有几个解决方案:
(1) 如果针对 iPhone OS 或 64 位 Cocoa,您可以@synthesize ivar:
富.h:
@interface Foo:NSObject
@property(readwrite, copy) NSString *publiclyReadwriteNoiVar;
@property(readonly, copy) NSString *publiclyReadonlyPrivatelyReadwriteNoiVar;
@end
Foo.m:
@interface Foo()
@property(readwrite, copy) NSString *privateProperty;
@end
@implementation Foo
@synthesize publiclyReadwriteNoiVar, publiclyReadonlyPrivatelyReadwriteNoiVar, privateProperty;
@end
(2) 使用类似于类集群的私有子类:
富.h:
@interface Foo:NSObject
@end
Foo.m:
@interface RealFoo:Foo
{
.... ivars here ....
}
@end
@implementation RealFoo
@end
@implementation Foo
+ (Foo *) convenienceMethodThatCreatesFoo
{
.... realFoo = [[RealFoo alloc] init]; ....
return realFoo;
}
@end