이 질문은 간단한 질문 일 수 있지만 메모리 관리에 대한 확신이 있어야합니다. NSArray에서 검색된 객체를 릴리즈해야합니까?
@implementation Class1
@synthesize Objects = _Objects;
#pragma mark -
#pragma mark Initializers
- (id)init {
self = [super init];
if (self) {
NSMutableArray * objects = [[NSMutableArray alloc] init];
NSObject * object1 = [[NSObject alloc] init];
NSObject * object2 = [[NSObject alloc] init];
NSObject * object3 = [[NSObject alloc] init];
[objects addObject:object1];
[objects addObject:object2];
[objects addObject:object3];
[object1 release];
[object2 release];
[object3 release];
}
return (self);
}
#pragma mark -
#pragma mark Some Method
- (void)method {
for (NSObject * object in self.Objects) {
// do some thing
[object release]; // (1) ?
}
NSObject * object = [self.Objects objectAtIndex:0];
[object release]; // (2) ?
for (NSObject * object in _Objects) {
// do some thing
[object release]; // (3) ?
}
NSObject * object = [_Objects objectAtIndex:0];
[object release]; // (4) ?
}
내 질문은 모든 릴리스 호출 (1 ~ 4)이 올바른지 있습니다
@interface Class1 : NSObject {
NSArray * _Objects;
}
@property (retain) NSArray * Objects;
@end
와하는 .m 파일에 다음 코드를 나는 .H 파일에 다음 코드를 그렇지 않은 경우 옳은 것과 그렇지 않은 것입니다. 또는 NSArray (NSMutableArray로 초기화되었다는 사실이 주어짐)가 객체를 보유하고 있지 않을 때 다른 구문을 유지합니까?
미리 감사드립니다.
대단히 고맙게 따라 와서 조용하게 만들었습니다. – Mousa