我有一个NSObject
的子类,称为Pump
。目前,它具有6个属性,可用于创建Pump
-uint8_t speed, double animateTime, float angle, bool operating, uint8_t direction, bool reactivate
的实例。
我的项目涉及通过Bluetooth PSoC 4模块和我的iPhone控制5个步进电机。每个步进器都独立于下一个步进器,因此我创建了5个Pump
对象,并将每个实例返回到我的MotorViewController
。
创建5个对象之后,我将它们存储在NSArray
中,以便在MotorViewController
的其余部分中访问它们及其属性。
这是我当前的实例化过程:
// Pump.m
#import "Pump.h"
@implementation Pump
@synthesize speed, animateTime, angle;
@synthesize operating, direction, reactivate;
- (id)initPump:(uint8_t)spd time:(double)t
angle:(float)ang operating:(bool)op
direction:(uint8_t)dir reactivate:(bool)r
{
self = [super init];
if (self) {
speed = spd;
animateTime = t;
angle = ang;
operating = op;
direction = dir;
reactivate = r;
}
return self;
}
+ (instancetype)pump:(uint8_t)spd
{
Pump *pump = [[Pump alloc] initPump:spd time:0 angle:M_PI
operating:false direction:0x00
reactivate:false];
return pump;
}
@end
// MotorViewController.m
#import "MotorViewController.h"
@interface MotorViewController
@property (nonatomic, strong) NSArray *pumps;
@end
@implementation MotorViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// those speed values are for UISlider objects
self.pumps = @[[Pump pump:(uint8_t)self.salineSlide.value],
[Pump pump:(uint8_t)self.sampleSlide.value],
[Pump pump:(uint8_t)self.airSlide.value],
[Pump pump:(uint8_t)self.wasteSlide.value],
[Pump pump:(uint8_t)self.lowlossSlide.value]];
}
我想把那个NSArray *pumps
放在我的Pump
模型中。
是否可以使我的主要工厂方法的返回类型为NSArray
甚至是NSMutableArray
?仍然保留pump:
方法,但在完成所有操作后,返回数组。
这甚至被认为是好的设计吗?感谢所有输入。
编辑
解?一种一次性的方案(从MotorViewController
开始,我调用pump:
并创建一个包含所有5个Pump
对象的数组)
pumps
是NSMutableArray
属性
@synthesize pumpsArray;
+ (NSMutableArray*)pump:(uint8_t)spd
{
for (int i = 0; i < 5; i++ {
Pump *pump = [[Pump alloc] initPump:spd time:0 angle:M_PI
operating:false direction:0x00
reactivate:false];
[pumpsArray addObject:pump];
}
return pumpsArray;
}