У меня есть подкласс NSObject
, называемый Pump
. В настоящее время у него есть 6 свойств, которые используются для создания экземпляра Pump
- uint8_t speed, double animateTime, float angle, bool operating, uint8_t direction, bool reactivate
.
Мой проект предусматривает управление 5 шаговыми двигателями через модуль Bluetooth PSoC 4 и мой iPhone. Каждый степпер не зависит от следующего, поэтому я создаю 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:
, но когда все сказано и сделано, верните массив.
Это даже считается хорошим дизайном? Весь вклад приветствуется.
EDIT
Решение? Вроде одного готового сценария (с 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;
}