Objective-C 기본 노트 (2) @property 및 @synthesize
2846 단어 iosObjective-Cpropertysynthesize
Person.h 파일
#import <Foundation/Foundation.h>
@interface Person : NSObject {
int _age; //
// int _no ( )
}
@property int age;
@property int no;
//
- (id)initWithAge:(int)age andNo:(int)no;
@end
P erson.m 파일
#import "Person.h"
@implementation Person
//Xcode 4.5 ( , _age _no)
//@synthesize age = _age; // protected
//@synthesize no = _no; //
- (id)initWithAge:(int)age andNo:(int)no {
if(self = [super init]){
_age = age;
_no = no;
}
return self;
}
- (NSString *)description {
return [NSString stringWithFormat:@"age is %i and no is %i", _age, _no];
}
@end
main.m 파일#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *person = [[Person alloc] initWithAge:15 andNo:2];
NSLog(@"age is %i and no is %i", person.age, person.no);
[person setNo:3];
NSLog(@"no is %i", [person no]);
//%@ OC
NSLog(@"%@", person);
}
return 0;
}
결과:2014-11-12 21:53:15.406 firstOCProj[826:47802] age is 15 and no is 2
2014-11-12 21:53:15.407 firstOCProj[826:47802] no is 3
2014-11-12 21:53:15.408 firstoCProj[826:47802] age is 15 and no is3에서 볼 수 있듯이 위의 코드가 많이 간결해졌다. @property의 역할은 구성원 변수에 대한 성명과 같고 @synthesize의 역할은 구성원 변수 setter와 Getter의 표준에 대한 실현과 같다.
주의해야 할 점:
1. Xcode4.5 이상은 @synthesize 속성을 쓰지 않아도 됩니다. (컴파일러 기본 추가)
2. 이런 기법은 앞의 기법(옛 기법)과 교차하여 사용할 수 있다.
3. setter나 Getter 방법에 대해 특별한 처리를 하려면 낡은 문법을 사용할 수 있다(컴파일러는 기본적으로 우리를 도와 실현하지 않는다).
4. 명시적인 성명 변수가 없으면 기본적으로 개인 구성원 변수가 생성됩니다(위의 no와 같은 클래스에서 사용할 수 없습니다).
다음은 위의 코드를 좀 더 간단하게 보여 드리겠습니다.
Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
@property int no;
@end
Person.m #import "Person.h"
@implementation Person
@end
main.m #import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *person = [Person new];
[person setAge:20];
[person setNo:3];
NSLog(@"age is %i and no is %i", person.age, person.no);
}
return 0;
}
결과:2014-11-12 22:14:44.002 firstoCProj[849:52867] age is 20 and no is 3 주의: 나의 컴파일러 Xcode는 4.5 이상이기 때문에 Person을 생략할 수 있습니다.m의 @synthesize 속성입니다.
여기는 OC와 Xcode 컴파일러에 감탄하지 않을 수 없습니다. 이렇게 편리하고 좋은 도구는 정말 처음 봤어요. 묵묵히 칭찬해 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.