Objective-C 객체가 스택이 아닌 스택에 저장되는 이유
1. 창고 대상과 무더기 대상은 무엇입니까
Objective-C에서 객체는 일반적으로 특정 레이아웃이 있는 연속 메모리 영역을 의미합니다.우리는 보통 이렇게 대상을 만든다
NSObject *obj = [[NSObject alloc] init];
이 코드는 NSObject 형식의 바늘obj와 NSObject 형식의 대상을 만들었습니다.obj 바늘은 창고에 저장되고, 가리키는 대상은 더미에 저장됩니다.
현재 OC는 창고에서 직접 대상(창고 대상)을 만드는 것을 지원하지 않지만, 다음과 같은 방식으로 간접적으로 만들 수 있습니다.
struct {
Class isa;
} fakeNSObject;
fakeNSObject.isa = [NSObject class];
NSObject *obj = (NSObject *)&fakeNSObject;
NSLog(@"%@", [obj description]);
2. 창고 대상의 장단점
1. 장점
2. 결점
512 KB (secondary threads)
8 MB (OS X main thread)
1 MB (iOS main thread)
따라서 대상이 창고에 생성되는 것은 현실적이지 않고 물리적 메모리가 경고하지 않으면 무한히 사용할 수 있다.이상의 장단점을 종합하여 OC는 퇴적 저장 대상을 선택한다.
정말 애인이 없습니까
실제로 OC의 Block은 창고 대상이기 때문에 창고 대상이 직면하는 문제는 Block에게 적지 않다. 그러나 Block은 유일한 특수 대상이기 때문에 모두들 그의 특수성에 익숙해졌다.또한 앞에서 말한 바와 같이 창고 대상의 유효한 영역은 그 소재의 블록에만 한정되기 때문에 아래의 코드와 같이 원하는 결과를 출력할 수 없습니다.
void (^block)();
if(x)
{
block = ^{ printf("x
"); };
}
else
{
block = ^{ printf("not x
"); };
}
block();
텍스트 링크:http://foggry.com/blog/2017/02/06/wei-shi-yao-objective-c-dui-xiang-cun-chu-zai-dui-shang-er-bu-shi-zhan-shang/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.