Пожалуйста, исправьте меня, где я ошибаюсь (я начинаю) Я хочу сохранить объекты класса в NSArray. Например:Сохраните объект в NSMutableArray
MySimpleClass *mscObj = [[MySimpleClass alloc] initWithSomething:@"something"];
NSMutableArray *myarr = [[NSMutableArray alloc] init];
[myarr addObject:mscObj];
mscObj = @"somethingelse";
И вот мой индекс myarr 0 изменится с @ "something" на @ "somethingelse". Зачем? Могу ли я хранить копию только для массива?
EDIT: В MySimpleClass:
#import <Foundation/Foundation.h>
@interface MySimpleClass : NSObject {
}
@property (strong,nonatomic) NSString *objectName;
@property (strong,nonatomic) NSString *objectTarget;
-(void)addName:(NSString*)name;
-(void)addTarget:(NSString*)target;
@end
.m файл
#import "MySimpleClass.h"
@implementation MySimpleClass
@synthesize objectName;
@synthesize objectTarget;
-(void)addName:(NSString*)name{
self.objectName = name;
}
-(void)addTarget:(NSString*)target{
self.objectTarget = target;
}
-(void)flushAll {
self.objectTarget = nil;
self.objectName = nil;
}
@end
Тогда в другом классе у меня есть:
MySimpleClass *mscObj = [[MySimpleClass alloc] initWithSomething:@"something"];
[myarr addObject:[mscObj copy]];
int testunit = [myarr count];
for(int i=0;i<testunit;i++) {
MySimpleClass *myelement = [myarr objectAtIndex:i];
NSLog(@"%@ : %@",myelement.objectName,myelement.objectTarget);
}
u изменил значение mscObj и NSArray сохранил только подтверждение объекта. ur myarr index 0 ссылаются на тот же объект, где значение объекта было изменено. если u хочет, чтобы индекс ur в 0 должен был иметь «что-то», а при индексе на 1 он должен быть «что-то», тогда вам нужно сохранить копию объекта в индексе 0, а затем добавить обновленную копию mscObj в индекс 1 с помощью метода addObject: – dayitv89