我想在ViewController的对象类中将对象追加到NSMutableArray。它设置如下,但下面的代码似乎不起作用。如果我从ViewController中记录数组,它似乎是附加的,但如果我从对象类中记录它,它就是空的。
CaptureManager.h
count
的ViewController
#import <UIKit/UIKit.h>
@class AVCamRecorder;
@protocol CaptureManagerDelegate;
@interface CaptureManager : NSObject {
}
@property (nonatomic,strong) NSMutableArray *assets;
@end
答案 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的原因。