Cal*_*YSR 0 arrays objective-c nsmutablearray
我正在为iphone制作RPG游戏.我想要做的是有一个库存,只允许您持有特定数量的特定类型的项目.我想这样做我只是扩展NSMutableArray并添加限制.我无法弄清楚这样做的最好方法.这是我头脑中的想法......
Backpack.h
@interface Backpack : NSMutableArray {
Class * arrayClass;
NSMutableArray * array;
int limit;
}
-(id) initWithClass:(Class) type andLimit:(int) num;
@end
Run Code Online (Sandbox Code Playgroud)
Backpack.m
@implementation Backpack
-(id)initWithClass:(Class) type andLimit:(int) num {
arrayClass = type;
limit = num;
array = [NSMutableArray new];
return self;
}
-(void)insertObject:(id) object atIndex:(int) index {
if([object isKindOfClass:arrayClass] && index < limit) {
// Insert it
} else {
// Throw Exception
}
}
@end
Run Code Online (Sandbox Code Playgroud)
而不是扩展NSMutableArray,只需创建自己的类,使用NSMutableArray实例来保存项目.您的类可以有一个或多个方法,这些方法或方法要求将项添加到某个类类型(或实现特定接口).至于限制项目数量,在addItem方法的一侧,首先检查所持有的项目数量.如果它大于您的限制,则不允许添加该项目.最后,你的类可以公开一个size方法(例如getSize()),它告诉你在NSMutableArray实例中已经有多少项内部被保存,这样你就可以防止在你的背包"满"时添加项目形式.
一般来说,组合(即从其他类的成员实例组成自己的类)比扩展类和使用继承来完成相同的行为更好.例如,如果扩展NSMutableArray,那么除了您的方法之外,生成的类将公开该类的所有公共方法,从而导致代码重用和文档立场中的混乱类.
最后,你的问题实际上与Java无关,所以也许这不应该用Java标签标记.