从ViewController追加到对象中的数组

时间:2015-05-21 13:36:01

标签: objective-c object

我想在ViewController的对象类中将对象追加到NSMutableArray。它设置如下,但下面的代码似乎不起作用。如果我从ViewController中记录数组,它似乎是附加的,但如果我从对象类中记录它,它就是空的。

CaptureManager.h

count

的ViewController

#import <UIKit/UIKit.h>

@class AVCamRecorder;
@protocol CaptureManagerDelegate;

@interface CaptureManager : NSObject {
}

@property (nonatomic,strong) NSMutableArray *assets;

@end

2 个答案:

答案 0 :(得分:0)

这是因为在您的视图控制器中,您正在创建CaptureManager的新对象。因此,您必须传递已创建的CaptureManager指针并使用它,或者拥有一个共享实例(单例)并在视图控制器中使用它,例如

@interface CaptureManager : NSObject

+ (instancetype)sharedManager;
@property (nonatomic,strong) NSMutableArray *assets;

@end

//--

@implementation
+ (instancetype)sharedManager
{
    static id instance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [self new];
    });
    return instance;
}

- (id)init
{  
    self = [super init];
    self.assets = [NSMutableArray new];
    return self;
}

然后,在你的vc中:

[[CaptureManager sharedManager].assets addObject:asset];

答案 1 :(得分:0)

或者,只需通过初始化程序或通过在VC上创建CaptureManager属性并将其设置为{{1}的特定实例,将CaptureManager的特定实例传递给VC。 }。

您可以(并且应该)阅读所有关于您应该避免singleton abuse的原因。