2012-06-02 5 views
0

Поэтому у меня есть следующий код:Невозможно добавить объекты в NSMutableArray

NSMutableArray *array 
array=[[NSMutableArray alloc] init]; 
[array addObject: object1]; 
[array addObject: object2]; 
NSLog(@"%@",array); 

Когда я использую приложение в айподе подключен к моему Mac, NSLog пишет просто пустой, я не получаю object1 Объект2 , Что я делаю не так?

PS: массив является собственностью в .h @property (nonatomic, retain) NSMutableArray *array;

+0

Можете ли вы разместить «NSLog» двух объектов? – Alladinian

+0

Вы '@synthesize array;' в файле .m? – Stefan

+0

Также, если у вас уже есть это свойство, то зачем делать 'NSMutableArray * array' (в котором вам не хватает точки с запятой)? – Alladinian

ответ

1

Должна ли она быть:

array=[[NSMutableArray alloc] init]; 
+0

отредактировал вопрос – adr

0

Ваш [[NSMutableArray array] init] должен быть [[NSMutableArray alloc] init]. Это будет работать, но это не является правильным способом инициализации объектов. Вы не сообщили, что такое ваш array, я предполагаю, что вы заявили это неправильно. Он должен быть указателем на объект NSMutableArray. Вот рабочий код:

NSMutableArray *array=[[NSMutableArray alloc] init]; 
[array addObject: @"a"]; 
[array addObject: @"b"]; 
NSLog(@"%@",array); 
+1

Возможно, он перечислил его как участника. – Luke

+0

отредактированный вопрос, у меня он как ваш код – adr

+0

@adr Если у вас есть синтезированное свойство, вам не нужна локальная переменная. – Adam

0

Вы не инициализируете свой массив вообще, поэтому он ничего не возвращает.

array=[[NSMutableArray alloc] init]; 
[array addObject: object1]; 
[array addObject: object2]; 
NSLog(@" Array is:%@",array); 

Не забудьте освободить его впоследствии (если вы не используете ARC)

0

Вы могли бы попробовать сделать это в одной строке.

NSMutableArray *array = [[NSMutableArray alloc] arrayWithObjects:@"a", @"b", nil]; 
NSLog(@"%@",array); 
+0

'arrayWithObjects' - метод класса – Alladinian

+0

@ В целом, он должен был использовать' initWithObjects: '. – Adam

+1

@Adam Или '[NSMutableArray arrayWithObjects: @" a ", @" b ", nil]' – Alladinian

0

Вы объявили массив как свойство. Соответствующий iVar инициализируется нулем. Так что в вашем методе инициализации вы должны инициализировать его:

Предполагая, что вы использовали

@synthesize array; 

В вашем методе инициализации

if (self) { 
//other init stuff 
array = [[NSMutableArray array] retain]; 
} 

Затем при добавлении материала

[self.array addObject: object]; 

Также обратите внимание что он возражает, что вы вставляете туда, должны быть правильно инициализированы, а r - нет. Так попытайтесь войти это слишком

NSLog("the object %@ was put in array. Array contains: %@",object, self.array); 

И в dealloc, освободить свой массив!

Смежные вопросы