OC-049.컬렉션의 메모리 관리(MRC 및 ARC)
· 대상을 집합에 추가하면 집합은 이 대상에 대해retain 조작을 한 번 합니다. 집합에서 대상을 삭제할 때 집합은 이 대상에 대해release 조작을 한 번 합니다. 집합이 삭제될 때 집합 중의 모든 원소에 대해release 조작을 한 번 합니다.
#import //------main.m
#import "LSMe.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
LSMe *me = [[LSMe alloc] init];
NSLog(@"%zd",me.retainCount);//1
// NSMutableArray *array = [NSMutableArray array]; , LSMe
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:me];// , retain
NSLog(@"%zd",me.retainCount);//2
// [array removeObject:me];// , release
[array release];// , release
NSLog(@"%zd",me.retainCount);//1
[me release]; //LSMe
}
return 0;
}
#import //------LSMe.h
@interface LSMe : NSObject
@end
#import "LSMe.h"//------LSMe.m
@implementation LSMe
-(void)dealloc{
NSLog(@"%s",__func__);
[super dealloc];
}
@end
2. ARC에서 집합된 메모리 관리
·대상을 집합에 추가하면.집합은 이 대상에 대한 강력한 인용(지침)이 있습니다. 집합에서 대상을 삭제할 때 집합은 이 대상에 대한 강력한 인용(지침)을 방출합니다. 그룹이 소각될 때 모든 요소를 호출하는 강력한 인용을 방출합니다.
#import //------main.m LSMe.h .m ,.m dealloc
#import "LSMe.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
LSMe *me = [[LSMe alloc] init];
NSMutableArray *array = [[NSMutableArray alloc] init];
// me = nil; me , me
[array addObject:me];// ,
// [array removeObject:me];// ,
me = nil;
array = nil;// ,
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.