Создание автоматически выпущенного массива NSMutableArray и его возврат.
-(NSMutableArray*)someMethod {
NSMutableArray *array = [NSMutableArray alloc] init] autorealese];
//Some code here
return array;
}
Method1 использует autorelease NSMutableArray от someMethod, и в течение жизни Method1 массив не будет автоматически освобожден. Это одно из правил управления памятью в target-c, согласно которому объект проходит цикл методов.
-(NSMutableArray*)method1 {
NSMutableArray *array = nil;
if(condition){
array = [self someMethod];
}
return array;
}
Method2 использует все еще ожидающий автоматического освобождения NSMutableArray из method1. Важно отметить, что в / у вас есть условие в method2, массив может быть nil.
-(NSMutableArray*)method2 {
NSMutableArray *array = nil;
array = [self method1];
}
Другими словами, вы передаете автоматически выпущенный объект по вашим методам. В этом нет ничего плохого. Вам просто нужно помнить, что если вы хотите сохранить значение метода method2, вам нужно сохранить его, иначе оно будет автоматически освобождено.
Из-за вашего состояния в method1 анализатор будет жаловаться, потому что не гарантируется, что method1 вернет объект, существует вероятность, что он вернет nil.