objective-c Xcode에서 @property 관련 매개 변수에 대한 설명
4128 단어 Objective-C
예:
@interface Person : NSObject
{
@protected
int _age;
}
- (int)get;
- (void)setAge:(int)age;
@end
@implementation Person
- (int)get
{
return _age;
}
- (void)setAge:(int)age
{
_age = age;
}
@end
Xcode에서 이러한 무미건조한 포맷 코드에서 벗어나기 위해 @property 속성 설정을 추가하고 @property 속성을 사용하면 컴파일러가 자동으로 이 코드를 실현할 수 있습니다.
예:
@interface Person : NSObject
@property int age;
@end
@implementation Person
@end
이 코드는 컴파일러를 거쳐 컴파일된 후 위의 코드와 완전히 같다.
그러나 실제 응용에서 메모리 관리, 다중 루틴, 구성원 변수가 읽기만 하는지 여부 등 수요가 많기 때문에 @property는 우리에게 이러한 서로 다른 수요를 실현하기 위해 많은 파라미터를 제공했다. 다음과 같다.
1. 메모리 관리 관련 사항:
*retain:release 이전 값,retain 새 값(대상 형식에 적용되는 구성원 변수)
*assign: 직접 값 부여(기본 매개 변수, 기본 데이터 형식에 적용되는 구성원 변수)
*copy:release 이전 값, copy 새 값
참고: 메모리 관리 정보http://www.cnblogs.com/yoran-yang/p/4293546.html
retain을 예로 들면 다음과 같습니다.
@interface Person : NSObject
@property (retain) Book *book;
@end
다음과 같습니다.
@interface Person : NSObject
{
@protected
Book *_book;
}
- (Book *)get;
- (void)setBook:(Book *)book;
@end
@implementation Person
- (Book *)get
{
return _book;
}
- (void)setBook:(Book *)book
{
if(book != _book)
{
[book release];
_book = [book retain];
}
}
@end
2. 읽기와 쓰기 제어 관련
*readwrite: Getter와setter의 성명과 실현을 동시에 생성합니다 (기본 인자)
*readonly:getter 방법만 생성
3. 다중 스레드 관련
*nonatomic: 다중 루틴 금지, 변수 보호, 성능 향상, 구성원 변수 읽기와 쓰기 작업 효율 수 배 증가(다중 루틴이 아닌 프로그램에 이 파라미터를 추가하는 것을 강력히 권장)
*atomic: 라인이 안전하고 성능이 낮음(기본 파라미터는 라인 안전, 즉 가선 자물쇠)
4.setter 및 Getter 메서드의 이름
*Getter = (Getter 메서드 이름)
*setter =(setter 메서드 이름) 참고: 이 메서드 이름은 뒤에 ":"을 붙여야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PreferenceBundle에서 오른쪽 상단에 Respring 버튼을 클릭합니다.만나서 반갑습니다, Minazuki라고합니다. 프로필 이름 : Minazuki_dev Twitter : Repo : 아직 중학생이므로 말이 이상한 곳이 있습니다만 용서해 주세요… 🙏 theos (Mac이든 단품이든 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.