Notice
Recent Posts
Recent Comments
Link
투케이2K
26. (Objective-C/objc) instancetype 사용해 클래스 생성자 초기화 실시 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : OBJECTIVE-C
[ViewController.m : 클래스 생성자 호출]
// MARK: - [뷰 로드 실시]
- (void)viewDidLoad {
[super viewDidLoad];
printf("\n");
printf("=============================== \n");
printf("[ViewController >> viewDidLoad() :: 뷰 로드 실시] \n");
printf("=============================== \n");
printf("\n");
// MARK: [클래스 생성자 초기화 및 메소드 호출 실시]
// MARK: [사전 헤더 파일 import 필요 : #import "TestClass.h"]
// [데이터 삽입 클래스 생성자 초기화 실시]
TestClass *ts = [[TestClass alloc] initName:@"투케이2K"
initAge:@29];
NSString *result = ts.formatInfo; // [메소드 호출]
printf("\n");
printf("=============================== \n");
printf("[데이터 삽입 클래스 생성자 초기화 :: %s] \n", result.description.UTF8String);
printf("=============================== \n");
printf("\n");
}
[TestClass.h : 헤더 정의]
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. TestClass (선언부)
2. 전역변수 , 메소드 , 인스턴스변수 (클래스 생성자) 등 선언
// -----------------------------------------
*/
// -----------------------------------------
/*
MARK: [요약 설명]
1. property (프로퍼티 정의)
- 클래스의 속성이나 설정을 지정하는 것입니다
- 변수 , 메소드 등을 선언해서 사용할 수 있습니다
2. strong (프로퍼티 속성)
- 객체 소유 (사용자 및 다른 개체가 같은 strong 속성으로 재선언 하지 않는 이상 파괴되지 않음)
3. nonatomic (프로퍼티 속성)
- 멀티 스레드 환경에는 작동 안하게 설정
4. instancetype
- 클래스 생성자 초기화 시 return type 이 선언한 class object 와 일치하도록 해줍니다
*/
// -----------------------------------------
// -----------------------------------------
// [클래스 내부 함수로 구현 실시]
@interface TestClass : NSObject
// [프로퍼티 정의 실시]
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSNumber *age;
// [instancetype 사용해 클래스 생성자 초기화]
- (instancetype) initName: (NSString *)nameData
initAge: (NSNumber *)ageData;
// [리턴 반환 메소드 선언 실시]
- (NSString *) formatInfo;
@end
// -----------------------------------------
[TestClass.m : 몸체 구현]
#import <Foundation/Foundation.h>
// MARK: - [헤더 파일 imort]
// -----------------------------------------
#import "TestClass.h"
// -----------------------------------------
// MARK: - [몸체 [구현부] 정의]
// -----------------------------------------
@implementation TestClass
// -----------------------------------------
// MARK: - [클래스 생성자 초기화 정의]
- (instancetype) initName:(NSString *)nameData
initAge:(NSNumber *)ageData {
self = [super init];
if (self != nil){
// [프로퍼티 변수에 데이터 삽입 시 (_) 사용]
_name = nameData;
_age = ageData;
}
return self;
}
// MARK: - [변수값 리턴 반환 메소드 구현 실시]
- (NSString *) formatInfo {
// [변수 값을 포맷해서 리턴 NSString 에 담고 반환 실시]
return [NSString stringWithFormat:@"이름 : %@ , 나이 : %@", _name, _age];
}
// -----------------------------------------
@end
// -----------------------------------------
[결과 출력]
반응형
'Objective-C' 카테고리의 다른 글
28. (Objective-C/objc) typedef struct 구조체 사용해 데이터 그룹 관리 수행 실시 (0) | 2022.03.01 |
---|---|
27. (Objective-C/objc) extern const 사용해 외부 공유 가능한 상수 정의 및 호출 수행 실시 (0) | 2022.02.28 |
25. (Objective-C/objc) NSDate 사용해 24 시간 형식 현재 날짜 및 시간 출력 실시 (0) | 2022.02.28 |
24. (Objective-C/objc) init 클래스 생성자 초기화 실시 및 리턴 포맷 데이터 확인 (0) | 2022.02.28 |
23. (Objective-C/objc) url 인코딩 (encode) , 디코딩 (decode) 수행 실시 - URLHost (0) | 2022.02.24 |
Comments