OC에서 porperty copy와 strong 비교
본고는 주로 iOS 개발에서 NSString 속성이 copy로 수식되었는지strong으로 수식되었는지의 문제를 토론하고자 한다. 토론하기 전에 심도 있는 복사와 얕은 복사를 먼저 이해해야 한다.
깊이 복사와 얕은 복사
NSString *str = @"kris";
NSString *strCopy = [str copy];
NSLog(@"str :%p, strCopy :%p", str, strCopy);
// : str1 :0x100001030, str2 :0x100001030
NSString *str = @"kris";
NSMutableString *strCopy = [str mutableCopy];
NSLog(@"str = %p, strCopy = %p", str, strCopy);
// : str = 0x100001030, strCopy = 0x100b00580
copy와 mutableCopy의 차이점
수식자(방법)
객체 복사
NSString
copy
NSString
mutableCopy
NSMutableString
NSMutableString
copy
NSString
mutableCopy
NSMutableString
질문
우선 두 가지 수식의 효과를 보도록 하겠습니다.
.h
파일에서property로 속성 name
Person *p = [[Person alloc] init];
NSMutableString *str = [NSMutableString stringWithFormat:@"kris"];
p.name = str;
// str
[str appendString:@"_itdog"];
NSLog(@"p.name = %@, str = %@", p.name, str);
코포로 꾸미다
.h
파일의 name
속성: @property (nonatomic, copy) NSString *name;
p.name = kris, str = kris_itdog
strong 코스메틱 사용
.h
파일의 name
속성: @property (nonatomic, strong) NSString *name;
p.name = kris_itdog, str = kris_itdog
copy 구현 원리
.m
파일에서 Getter/setter 방법을 생성하고,copy로 수식하는 것은 사실 속성의 setter
방법으로 값을 부여할 때copy 방법을 사용한다. 코드는 다음과 같다: - (void)setName:(NSString *)name
{
_name = [name copy];
}
총결산
setter
방법이고 바깥의 값을 속성에 복사하는 것은 깊이 복사참고:
strong
로 NSString을 수식한다. 만약에 copy로 수식하면 매번 내부에서 copy 방법을 호출하기 때문에 데이터가 많을 때 매번 copy 방법을 호출하여 성능에 영향을 줄 수 있기 때문에 strong으로 일정한 성능을 향상시킬 수 있다이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.