У меня есть NSMutableArray как singleton; когда я пытаюсь добавить объект, я получаю ошибку сборки. Что не так с кодом?Ошибка сборки при попытке добавить объект в NSMutableArray singleton
Вот код singleton.h:
@interface SingletonArrayOfSelectedRows : NSObject {
}
@property (nonatomic, retain) NSMutableArray *arrayOfSelectedRows;
+ (id)sharedArrayOfSelectedRows;
@end
Вот код singleton.m:
@implementation SingletonArrayOfSelectedRows {
}
@synthesize arrayOfSelectedRows; // rename
// sharedSelectedCellIndexes
+ (id)sharedArrayOfSelectedRows {
static dispatch_once_t dispatchOncePredicate = 0;
__strong static id _sharedObject = nil;
dispatch_once(&dispatchOncePredicate, ^{
_sharedObject = [[self alloc] init];
});
return _sharedObject;
}
-(id) init {
self = [super init];
if (self) {
arrayOfSelectedRows = [[NSMutableArray alloc] init];
}
return self;
}
@end
Вот строки кода, где я получаю сообщение об ошибке:
SingletonArrayOfSelectedRows *arrayOfSelectedRows = [SingletonArrayOfSelectedRows sharedArrayOfSelectedRows];
[arrayOfSelectedRows[indexPath.row] = [NSNumber numberWithInt:-1]; // reset it...
И это ошибка:
Expected method to read array element not found on object of type 'SingletonArrayOfSelectedRows *'
Помните, что NSMutableArray является частью кластера классов, который вводит еще несколько правил при подклассификации. По крайней мере, если вы хотите, чтобы ваш класс вел себя как настоящий NSMutableArray с добавленной функциональностью. См. Мое сообщение для документации по этому вопросу. – sofacoder
Вы никогда не должны даже думать о подклассе NSMutableArray. – gnasher729