Objective-C 2.0 메모리 관리
대상의 실례를 만들 때 (init,alloc) 응용 계수가 1을 더하고, 실행 과정에서 다른 대상이 이 대상을 필요로 한다면 (retain) 으로 인용해야 하며, 이 대상의 응용 계수기는 1을 추가합니다.대상이 필요 없을 때 (release) 로 방출하고, 인용계수기를 1로 줄이고, 계수기가 0일 때 대상 메모리를 방출합니다.
- init,alloc - +1
- retain - +1
- release - -1
또한retain,release를 사용하지 않으면 (autorelease)를 사용하여 대상을 자동으로 방출할 수 있습니다.
용기.
Objective-C의 컨테이너는 주로 다음 세 가지가 있습니다.
배열
자전
Set
컨테이너에 추가된 내용은 int나 float를 직접 사용할 수 없으며 NSNumber 등 봉인 클래스를 통해 이루어져야 한다.Objective-C 2.0에서는 컨테이너의 요소에 순차적으로 액세스하기 위해 반복자(Enumerator)를 사용할 수 있습니다.
Notification
Notification은 메시지 알림의 기능입니다.구체적으로 NSNotificationCenter 클래스를 사용합니다.알림을 받아야 하는 대상, 방법, 이벤트를 이 클래스에 등록합니다.
아카이빙
아카이브란 객체의 메모리 레이아웃을 파일 시스템에 있는 그대로 저장하는 것입니다.파일의 데이터로 생성되는 동일한 객체를 Unachive라고 합니다.아이폰SDK에서는 NSKeyedArchiver와 NSKeyedUnarchiver 클래스를 사용하여 구현됩니다.
일반적으로 프로그램이 끝날 때 현재 상태를 저장하고 다시 시작할 때 Unachive는 방금 종료했을 때의 상태로 돌아간다.다음 예는 다음과 같습니다.
- // MyKeyedArchiver.h
- #import
- @interface NSKeyedArchiver (MyKeyedArchiver)
- - (void)encodeValueOfObjCType:(const char *)valueType at:(const void *)address;
- @end
- #import "MyKeyedArchiver.h"
- @implementation NSKeyedArchiver (MyKeyedArchiver)
- - (void)encodeValueOfObjCType:(const char *)valueType at:(const void *)address
- {
- NSMutableData *datas = [NSMutableData data];
- NSArchiver *arch = [[NSArchiver alloc] initForWritingWithMutableData:datas];
- [arch encodeValueOfObjCType:valueType
- at:address];
- [self encodeObject:[NSData dataWithData:datas]];
- [arch release];
- }
- @end
- // MyKeyedUnarchiver.h
- #import
- @interface NSKeyedUnarchiver (MyKeyedUnarchiver)
- - (void)decodeValueOfObjCType:(const char *)valueType at:(void *)data;
- @end
- #import "MyKeyedUnarchiver.h"
- @implementation NSKeyedUnarchiver (MyKeyedUnarchiver)
- - (void)decodeValueOfObjCType:(const char *)valueType at:(void *)data
- {
- NSData *datas = [self decodeObject];
- NSUnarchiver *unarch = [[NSUnarchiver alloc] initForReadingWithData:datas];
- [unarch decodeValueOfObjCType:valueType
- at:data];
- [unarch release];
- }
- @end
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.