1. 시작 전에 프로젝트 코드 기본 세팅하고 오기

 

https://growingsaja.tistory.com/869

 

[Objective-C] 프로젝트 기본 세팅 소스코드 예시

1. AppDelegate 수정 with 설명 // vim AppDelegate.h #import // MARK: - [클래스 설명] /* // ----------------------------------------- 1. 애플리케이션 딜리게이트 (선언부) 2. 전역변수 , 메소드 , 인스턴스변수 (클래스 생

growingsaja.tistory.com

 

 

 

 

 

2. extern const 사용 예제 소스코드

 

// vim S_Final/S_FinalData.h

#import <Foundation/Foundation.h>

// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. S_FinalData (선언부)
2. 상수 관리 클래스
// -----------------------------------------
*/



// -----------------------------------------
@interface S_FinalData : NSObject
// -----------------------------------------



// -----------------------------------------
/*
MARK: [요약 설명]
1. 외부에서 접근 가능한 상수 정의 클래스 (즉시, 상수 명을 사용해서 호출)
 
2. 비교 static const / extern const
  - static const : 클래스 내부 사용 공유 변수
  - extern const : 클래스 외부 사용 공유 변수
*/
// -----------------------------------------



// -----------------------------------------
// [extern const 정의]
extern NSString *const name;
extern int const age;
extern char const sex;
extern bool const isDeveloper;
extern double const weight;
// -----------------------------------------



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

 

// vim S_Final/S_FinalData.m

#import <Foundation/Foundation.h>


// MARK: [헤더 파일 import]
#import "S_FinalData.h"


@implementation S_FinalData


// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. S_FinalData (구현부)
2. 상수 초기값 삽입 실시
// -----------------------------------------
*/



// -----------------------------------------
// MARK: [프로퍼티 초기값 지정 : static 으로 선언해 데이터 보호 및 get , set 으로 변수에 접근]
NSString *const name = @"grow사자";
int const age = 22;
char const sex = 'M';
bool const isDeveloper = true;
double const weight = 77.5;
// -----------------------------------------


@end

 

// vim ViewController.m

// ViewController.h 파일을 import하여 해당 클래스의 정의를 가져옵니다.
#import "ViewController.h"
#import "S_Final/S_FinalData.h"

// MARK: - [헤더 [선언부] 호출]
@interface ViewController ()
@end
@implementation ViewController



// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. ViewController (구현부)
2. ios 13 이상 사용 : API_AVAILABLE(ios(13.0))
// -----------------------------------------
*/



// MARK: - [뷰 로드 실시]
// 메서드를 구현합니다. 이 메서드는 뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출되는 메서드입니다.
- (void)viewDidLoad {
    // 부모 클래스인 UIViewController의 viewDidLoad 메서드를 호출합니다.
    [super viewDidLoad];
    NSLog(@"[ViewController >> viewDidLoad() :: 뷰 로드 실시]");
    // MARK: [프로토콜 메소드 호출 실시]
}



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



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


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


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


// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
- (void)testMain {
    NSLog(@"[ViewController >> testMain() :: 테스트 메소드 수행]");
    
    // MARK: [S_Final 클래스 외부 공유 상수 호출 실시]
    // MARK: [사전 헤더 파일 import 필요 : #import "S_FinalData.h"]
    // MARK: [S_FinalData 클래스에 선언된 상수 즉시, 호출 실시]
    
    
    NSLog(@"[name :: %s]", name.description.UTF8String);
    NSLog(@"[age :: %d]", age);
    NSLog(@"[sex :: %c]", sex);
    NSLog(@"[developer :: %d]", isDeveloper);
    NSLog(@"[weight :: %f]", weight);
    
}


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

 

 

 

 

 

3. extern const 사용 예제 소스 실행 결과

 

 

 

 

 

 

4. typedef 구조체를 통한 데이터 그룹 관리 예시 소스코드

 

// vim ViewController.h

// UIKit 프레임워크의 헤더 파일을 import합니다. UIKit은 iOS 애플리케이션 개발에 필요한 다양한 클래스와 기능을 제공합니다.
#import <UIKit/UIKit.h>
/*
// -----------------------------------------
1. ViewController (선언부)
2. 전역변수 , 메소드 , 인스턴스변수 (클래스 생성자) 등 선언
// -----------------------------------------
*/



// -----------------------------------------
/*
MARK: [요약 설명]
1. typedef : 유형에 새로운 이름 (별칭) 을 지정합니다
2. struct : 구조체 선언을 의미합니다
3. 구조체 방식을 사용해 데이터를 그룹 형식으로 관리할 수 있습니다
*/
// -----------------------------------------



// -----------------------------------------
// [typedef struct 구조체 선언 실시]
typedef struct UserInfo {
    NSString *name;
    int age;
    char sex;
} UserInfo;
// -----------------------------------------



// -----------------------------------------
// [클래스 내부 함수로 구현 실시]
@interface ViewController : UIViewController

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

 


// vim ViewController.m

// ViewController.h 파일을 import하여 해당 클래스의 정의를 가져옵니다.
#import "ViewController.h"

// MARK: - [헤더 [선언부] 호출]
@interface ViewController ()
@end
@implementation ViewController



// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. ViewController (구현부)
2. ios 13 이상 사용 : API_AVAILABLE(ios(13.0))
// -----------------------------------------
*/



// MARK: - [뷰 로드 실시]
// 메서드를 구현합니다. 이 메서드는 뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출되는 메서드입니다.
- (void)viewDidLoad {
    // 부모 클래스인 UIViewController의 viewDidLoad 메서드를 호출합니다.
    [super viewDidLoad];
    NSLog(@"[ViewController >> viewDidLoad() :: 뷰 로드 실시]");
    // MARK: [프로토콜 메소드 호출 실시]
}



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



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


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


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


// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
- (void)testMain {
    NSLog(@"[ViewController >> testMain() :: 테스트 메소드 수행]");
    
    // MARK: [구조체 데이터 삽입 및 호출 수행 실시]
    // MARK: [사전 헤더 파일 import 필요 : #import "ViewController.h"]
    
    
    // [구조체 [1] 데이터 삽입 및 출력 실시]
    UserInfo user1;
    user1.name = @"grow사자";
    user1.age = 22;
    user1.sex = 'M';
    
    NSLog(@"[[1] name :: %s]", user1.name.description.UTF8String);
    NSLog(@"[[1] age :: %d]", user1.age);
    NSLog(@"[[1] sex :: %c]", user1.sex);
    
    
    // [구조체 [2] 데이터 삽입 및 출력 실시]
    UserInfo user2;
    user2.name = @"호랑이";
    user2.age = 33;
    user2.sex = 'W';
    
    NSLog(@"[[2] name :: %s]", user2.name.description.UTF8String);
    NSLog(@"[[2] age :: %d]", user2.age);
    NSLog(@"[[2] sex :: %c]", user2.sex);
}

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

 

 

 

 

 

5. typedef 구조체를 통한 데이터 그룹 관리 예시 결과

 

 

 

 

 

 

+ Recent posts