투케이2K

60. (Objective-C/objc) #define 전처리 지시어 사용해 헤더 파일에 상수 값 정의 및 호출 실시 본문

Objective-C

60. (Objective-C/objc) #define 전처리 지시어 사용해 헤더 파일에 상수 값 정의 및 호출 실시

투케이2K 2022. 9. 6. 16:59

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : OBJECTIVE-C

 

[S_Define 상수 정의 헤더 파일 - 소스 코드]

/*
// -----------------------------------------
// MARK: - [클래스 설명]
// -----------------------------------------
[전처리기 지시어 관리 헤더 파일]
// -----------------------------------------
1. #define 은 전처리기 지시어 입니다
// -----------------------------------------
2. #define 정의는 타입에 대한 정보가 없습니다 (타입 안전성이 떨어짐)
// -----------------------------------------
3. #define 주로 간단한 함수나 고정 된 값이나 고정된 문자열을 만들때 사용됩니다
// -----------------------------------------
4. #define 이 헤더 파일에 선언되어 있다면 그 헤더 파일을 포함하는 모든 곳에서 #define 으로 정의한 상수 값을 사용할 수 있습니다
// -----------------------------------------
5. 주의할 점은 #define 으로 선언 시 컴파일에서는 에러가 발생하지 않지만, 런타임에서 에러가 발생할 수 있습니다
// -----------------------------------------
6. #define 은 컴파일 후 기호 테이블에 들어가지 않기 때문에 디버깅에 어려움이 있습니다
// -----------------------------------------
7. #define 대신 const 를 사용해 상수를 명시하는 것이 안정성이 더 좋습니다
// -----------------------------------------
8. 사용 방법
 
  사용하는 쪽 : #import "S_Define.h"
 
  호출 방법 : NSString *url = @LOGIN_URL;
// -----------------------------------------
*/

#define DEFAULT_URL "https://" // [기본 주소]

#define LOGIN_URL DEFAULT_URL"test/api/login" // [기본주소/경로]
 

[ViewController 실제 사용 부분 - 소스 코드]

#import "ViewController.h"


// MARK: - [전처리 지시어 헤더 파일 import]
#import "S_Define.h"


// MARK: - [프로젝트-Swift.h import 명시]
#import "objectiveProject-Swift.h"


@interface ViewController ()

@end

@implementation ViewController





// MARK: - [뷰 로드 실시]
- (void)viewDidLoad {
    [super viewDidLoad];
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> viewDidLoad() :: 뷰 로드 실시] \n");
    printf("==================================== \n");
    printf("\n");
}





// MARK: - [뷰 로드 완료]
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> viewWillAppear() :: 뷰 로드 완료] \n");
    printf("==================================== \n");
    printf("\n");
}





// MARK: - [뷰 화면 표시]
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> viewDidAppear() :: 뷰 화면 표시] \n");
    printf("==================================== \n");
    printf("\n");
    
    // [테스트 메인 함수 호출]
    [self testMain];
}





// MARK: - [뷰 정지 상태]
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> viewWillDisappear() :: 뷰 정지 상태] \n");
    printf("==================================== \n");
    printf("\n");
}





// MARK: - [뷰 종료 상태]
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> viewDidDisappear() :: 뷰 종료 상태] \n");
    printf("==================================== \n");
    printf("\n");
}





// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
- (void)testMain {
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> testMain() :: 테스트 메소드 수행] \n");
    printf("==================================== \n");
    printf("\n");
    
    
    // [초기 변수 선언 실시]
    NSString *url = @LOGIN_URL;
    
    
    // [로그 결과 출력]
    printf("\n");
    printf("==================================== \n");
    printf("[ViewController >> testMain() :: 로그 결과 확인] \n");
    printf("[url :: %s] \n", url.description.UTF8String);
    printf("==================================== \n");
    printf("\n");
}



@end
 

[결과 출력]

 

반응형
Comments