투케이2K

24. (Objective-C/objc) init 클래스 생성자 초기화 실시 및 리턴 포맷 데이터 확인 본문

Objective-C

24. (Objective-C/objc) init 클래스 생성자 초기화 실시 및 리턴 포맷 데이터 확인

투케이2K 2022. 2. 28. 09:29

[개발 환경 설정]

개발 툴 : 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"]
    
    
    // [일반 init 클래스 생성자 초기화 실시]
    TestClass *ts_1 = [[TestClass alloc] init];
    NSString *result_1 = ts_1.formatInfo; // [메소드 호출]
    printf("\n");
    printf("=============================== \n");
    printf("[일반 클래스 생성자 초기화 :: %s] \n", result_1.description.UTF8String);
    printf("=============================== \n");
    printf("\n");
    
    
    // [데이터 삽입 클래스 생성자 초기화 실시]
    TestClass *ts_2 = [[TestClass alloc] initName:@"투케이2K" initAge:29];
    NSString *result_2 = ts_2.formatInfo; // [메소드 호출]
    printf("\n");
    printf("=============================== \n");
    printf("[데이터 삽입 클래스 생성자 초기화 :: %s] \n", result_2.description.UTF8String);
    printf("=============================== \n");
    printf("\n");
}
 

[TestClass.h : 헤더 정의]

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>


// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. TestClass (선언부)
2. 전역변수 , 메소드 , 인스턴스변수 (클래스 생성자) 등 선언
// -----------------------------------------
*/



// -----------------------------------------
/*
MARK: [요약 설명]
1. objc 에서는 객체 인스턴스를 생성하기 위해서 우선, 메모리 할당 >> 다음, 초기화를 진행합니다
2. 클래스 생성자 초기화는 헤더 h 파일에 선언된 @interface 내부에 선언합니다
*/
// -----------------------------------------



// -----------------------------------------
// [클래스 내부 함수로 구현 실시]
@interface TestClass : NSObject {
    
    // [클래스 생성자 초기화 변수 선언]
    NSString *name;
    int age;
}


// [일반 클래스 생성자 초기화]
-(id) init;


// [데이터 사용해 클래스 생성자 초기화]
-(id)initName:(NSString *)nameData initAge:(int)ageData;


// [인스턴스 메소드 선언 실시]
-(NSString *) formatInfo;


@end
// -----------------------------------------
 

[TestClass.m : 몸체 구현]

#import <Foundation/Foundation.h>


// MARK: - [헤더 파일 imort]
// -----------------------------------------
#import "TestClass.h"
// -----------------------------------------



// MARK: - [몸체 [구현부] 정의]
// -----------------------------------------
@implementation TestClass
// -----------------------------------------



// MARK: - [일반 init 클래스 생성자 정의]
- init {
    self = [super init];
    if (self != nil){
        
        // [변수값 널 데이터 삽입]
        name = @"0";
        age = 0;
    }
    return self;
}



// MARK: - [데이터 삽입 init 클래스 생성자 정의]
- (id) initName:(NSString *)nameData initAge:(int)ageData {
    self = [super init];
    if (self != nil){
        name = nameData; // 변수에 인풋으로 들어온 데이터 삽입
        age = ageData; // 변수에 인풋으로 들어온 데이터 삽입
    }
    return self;
}



// MARK: - [변수값 리턴 반환 메소드 구현 실시]
- (NSString *) formatInfo {
    
    // [변수 값을 포맷해서 리턴 NSString 에 담고 반환 실시]
    return [NSString stringWithFormat:@"이름 : %@ , 나이 : %d", name, age];
}


// -----------------------------------------
@end
// -----------------------------------------
 

[결과 출력]


반응형
Comments