0
我想知道我怎么能做到我总是用Java完成的一件事情。Objective-C类方法中的实例变量访问
public class ObjectHolder {
private List<Object> holder;
public ObjectHolder() {
// initialize object holder...
}
public boolean addObject(Object obj) {
// add object and return true/false
}
}
这种方法的好处是持有人不能直接操作。 我试图理解这种情况在Objective-C来实现,尤其是我做了这个Objective-C类接口:
@interface ObjectHolder : NSObject {
NSMutableArray *holder;
}
+(ObjectHolder*)holderWithObjects:(NSArray*)objs;
-(BOOL)addObject:(NSObject*)obj;
@end
但是,这是我的问题入手,特别是类方法holderWithObjects内:
+(ObjectHolder*)holderWithObjects:(NSArray*)objs {
ObjectHolder *oh = [[[ObjectHolder alloc] init] autorelease];
oh->holder= // array initialization and retain
for(NSObject obj in objs) {
// add to holder array
[oh->holder addObject:obj];
}
return oh;
}
- 持有人是一个实例变量,如何避免在@property改造它,我知道有在Objective-C无“私”的概念,但我不希望开发者误解了正确使用班级(我希望这个概念很清楚)。
- 在Java中有一个构造函数,我可以初始化属性,在Objective-C类中,这是最适合的地方吗?
- 如果不使用@property如何管理内存释放?
- 如果我没有使用@property,编译器会抱怨没有这样的变量
- 在类方法holderWithObjects我不能直接访问持有者,除非它是一个属性,所以我最终使用直接访问持有者。