다음 코드를 고려해보십시오.iPhone에서 수수께끼를 푸는 데 도움을 주시겠습니까?
//CallerClass.h
@interface CallerClass : UITableViewController {
NSMutableArray *dataArray;
}
@property(nonatomic,retain) NSMutableArray *dataArray;
-(void) setData;
//CallerClass.m
@implementation CallerClass
@synthesize dataArray;
-(id)initWithStyle:(UITableViewStyle)style {
if (self = [super initWithStyle:style]) {
[self setData];
}
return self;
}
-(void) setData
{
dataArray = [CalledClass getData];
[dataArray release];
}
//CalledClass.h
@interface CalledClass : NSObject {
}
+(NSMutableArray*) getData;
//CalledClass.m
@implementation CalledClass
+(NSMutableArray*) getData
{
NSMutableArray* tempArray = [[NSMutableArray alloc] init];
return tempArray;
}
tempArray 인 dataArray의 보유 개수를 알고 싶습니다. 출시 될 예정입니다. 나는 내가 그것을 필요로 할 때까지 내가 모르는만큼 autorelease를 사용하고 싶지 않다. 그래서 나는 그것을 스스로 풀고 싶다. tempArray를 할당 할 때 보유 수는 1이됩니다. 그러나이 속성을 retain이라는 인스턴스 변수 dataArray에 할당하면 해당 배열의 보유 수는 2가됩니까 아니면 1로 유지됩니까? dataArray를 해제 할 때처럼 메모리가 해제됩니다.
을 (당신이 속성 선언에서 "유지"지정했기 때문에) 객체를 해제 처리됩니다 = [호출 된 getData]; – rkb