@property 키워드의 차이점:assign과 weak,Block 및weak,strong,copy
assign과 weak의 차이
assign은 기본 데이터 형식, weak은 NSObject 객체
Q:assign은 사실 대상을 수식할 수 있는데 왜 대상을 수식하지 않나요?assign으로 장식된 대상이 놓인 후에도 바늘의 주소가 존재한다. 즉, 바늘이 nil로 설정되지 않아 야생 바늘을 만든다는 것이다.
Q:왜 assign으로 기본 데이터 형식을 수식할 수 있습니까?기본 데이터 형식은 일반적으로 창고에 분배되고 창고의 메모리는 시스템이 자동으로 관리하기 때문에 야외 지침을 만들지 않는다
weak 수식의 대상이 풀리면 바늘 주소가nil로 설정됩니다.
장면 사용
strong과copy의 차이
얕은 복사와 깊은 복사
얕은 복사 후의 내용은 원시 내용 포인터 주소와 같이 깊이 복사된 내용은 원시 내용 관련 대상의 복사를 가리키며 원시 내용 포인터 주소와 다르다(깊이 복사는 요소마다 copy 메시지를 보내고 복사된 요소로 set을 만든다)
간단히 말하면
포인터 복제본,
컨텐츠 복제본[immutableObject copy]; //
[immutableObject mutableCopy]; //
[mutableObject copy]; //
[mutableObject mutableCopy]; //
__Block 및차이점
__Block 수식 변수, Block 코드 블록에서 수정 가능
__weak 수식 변수는 Block 블록에서retain에 의해 변경되지 않습니다__weak typedof(self) weakSelf = self;
Block 변수 정의는 왜copy를 사용합니까?Block은 어디에 두나요?
Block 자체도 하나의 대상이다.Block을 만들 때 메모리 주소는 창고에 분배되어 언제든지 회수될 수 있습니다.Block 자체의 역할 영역은 만들 때의 역할 영역에 속하며, 만들 때의 역할 영역을 Block으로 바꾸면 프로그램이 붕괴될 수 있습니다.copy는 Block을 무더기로 복사할 수 있으며, Block의 성명 영역 밖에서 사용할 수 있습니다
스택과 힙합 쌓기
stack heap .bss .data .text
창고 구역
LIFO, 자동 할당일반 방함수 매개 변수 값, 국부 변수 값 등.컴파일러가 자동으로 생성하고 방출합니다.
퇴적 구역
메모리 생성 크기를 스스로 신청할 수도 있고, 스스로 풀어야 한다.
Block은 왜 strong을 안 써요?
Block이 self를 사용하면 리타인 self가 되고,strong이 수식되면 순환 인용이 발생합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
[immutableObject copy]; //
[immutableObject mutableCopy]; //
[mutableObject copy]; //
[mutableObject mutableCopy]; //
__Block 수식 변수, Block 코드 블록에서 수정 가능
__weak 수식 변수는 Block 블록에서retain에 의해 변경되지 않습니다
__weak typedof(self) weakSelf = self;
Block 변수 정의는 왜copy를 사용합니까?Block은 어디에 두나요?
Block 자체도 하나의 대상이다.Block을 만들 때 메모리 주소는 창고에 분배되어 언제든지 회수될 수 있습니다.Block 자체의 역할 영역은 만들 때의 역할 영역에 속하며, 만들 때의 역할 영역을 Block으로 바꾸면 프로그램이 붕괴될 수 있습니다.copy는 Block을 무더기로 복사할 수 있으며, Block의 성명 영역 밖에서 사용할 수 있습니다
스택과 힙합 쌓기
stack heap .bss .data .text
창고 구역
LIFO, 자동 할당일반 방함수 매개 변수 값, 국부 변수 값 등.컴파일러가 자동으로 생성하고 방출합니다.
퇴적 구역
메모리 생성 크기를 스스로 신청할 수도 있고, 스스로 풀어야 한다.
Block은 왜 strong을 안 써요?
Block이 self를 사용하면 리타인 self가 되고,strong이 수식되면 순환 인용이 발생합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
stack heap .bss .data .text
창고 구역
LIFO, 자동 할당일반 방함수 매개 변수 값, 국부 변수 값 등.컴파일러가 자동으로 생성하고 방출합니다.
퇴적 구역
메모리 생성 크기를 스스로 신청할 수도 있고, 스스로 풀어야 한다.
Block은 왜 strong을 안 써요?
Block이 self를 사용하면 리타인 self가 되고,strong이 수식되면 순환 인용이 발생합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.