我知道這可能是一個簡單的問題,但我必須確保我在管理內存方面進展順利。 我在.h文件中下面的代碼:我應該釋放從NSArray中檢索到的對象嗎?
@interface Class1 : NSObject {
NSArray * _Objects;
}
@property (retain) NSArray * Objects;
@end
和.m文件下面的代碼:
@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)如果不是什麼是對的,什麼不對。或者當NSArray(假定它已經用NSMutableArray初始化的事實)保留了對象,並且它沒有保留時,這是另一個短語?
在此先感謝。
非常感謝你讓安靜簡單的遵循。 – Mousa 2011-03-29 10:26:54