У меня есть структуры в моей Objective-C код, как это>Objective-C свойства Struct высвобождаются перед использованием
typedef struct {
__unsafe_unretained NSString *string1;
__unsafe_unretained NSString *string2;
__unsafe_unretained NSString *string3;
__unsafe_unretained NSString *string4;
__unsafe_unretained NSString *string5;
.
.
.
__unsafe_unretained NSString *string10;
} MyStruct;
В моем классе модели хранить эти Структуры в массиве объявлен
@property (nonatomic, strong) NSMutableArray *myStructArray;
я построить это в моем файле .m во время выполнения, как этот
NSMutableArray *myTempArray = [NSMutableArray array];
for (NSDictionary *jsonDict in jsonArray)
{
MyStruct stringsStruct = parseWithDictionary(jsonDict);
[myTempArray addObject:[NSValue value:&stringsStruct withObjCType:@encode(MyStruct)]];
}
myObject.myStructArray = myTempArray;
проблема в том, когда я пытаюсь получить доступ к этому после разбора/Построив внутри объектов уже высвобождены & я получил ошибку
-[CFURL length]: message sent to deallocated instance
Вот как я получить доступ к свойствам позже, кстати,
MyStruct myStruct;
[[myObject.myStructArray objectAtIndex:someIndex] getValue:&myStruct];
NSLog(@"%@",myStruct.string1); // << bam! crash
Как это исправить? Есть ли способ убедиться, что объекты объектов остаются нетронутыми без освобождения, пока я не покончу с этим? Я использую ARC & не может удалить с помощью __unsafe_unretained.
Я не понимаю, какова цель этой структуры. Почему это не объект или вложенный массив. Какую выгоду вы получаете от того, что это структура, с которой вы начинаете? Также вы можете получить к ним доступ сразу после создания правильно, в основном вы уверены, что их инициализация начинается? –