1. 사전 프로젝트 코드 세팅하고 오기

 

https://growingsaja.tistory.com/869

 

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

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

growingsaja.tistory.com

 

 

 

 

 

2. S_FinalData.h 소스코드 작성

 

 S_Final 그룹 생성 및 S_FinalData.h 파일 생성

 

// vim S_Final/S_FinalData.h

#import <Foundation/Foundation.h>

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


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


// -----------------------------------------
/*
MARK: [요약 설명]
1. property (프로퍼티 정의)
  - 클래스의 속성이나 설정을 지정하는 것입니다
  - 변수 , 메소드 등을 선언해서 사용할 수 있습니다
  - 프로퍼티는 실제 사용할때는 클래스에서 getter , setter 의미로 사용하면 됩니다
 
2. class
  - 사용자 클래스 선언을 위해서 사용합니다
  
3. nonatomic
  - 멀티 스레드 환경에는 작동 안하게 설정
 
4. assign
  - get , set 사용
*/
// -----------------------------------------



// -----------------------------------------
// [프로퍼티 정의]
@property (class, nonatomic, assign) NSString * name;
@property (class, nonatomic, assign) int age;
@property (class, nonatomic, assign) char sex;
@property (class, nonatomic, assign) bool isDeveloper;
@property (class, nonatomic, assign) double weight;
// -----------------------------------------



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

 

 

 

 

 

3. S_FinalData.m 소스코드 작성

 

// vim S_Final/S_FinalData.m

#import <Foundation/Foundation.h>


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


@implementation S_FinalData


// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. S_FinalData (구현부)
2. 헤더 파일에 정의한 @property getter , setter 구현
// -----------------------------------------
*/



// -----------------------------------------
// MARK: [프로퍼티 초기값 지정 : static 으로 선언해 데이터 보호 및 get , set 으로 변수에 접근]
static NSString * _name = @"옵젝마스터";
static int _age = 29;
static char _sex = 'M';
static bool _isDeveloper = true;
static double _weight = 62.5;
// -----------------------------------------



// -----------------------------------------
// MARK: [getter 지정]
+ (NSString *) name { return _name; }
+ (int) age { return _age; }
+ (char) sex { return _sex; }
+ (bool) isDeveloper { return _isDeveloper; }
+ (double) weight { return _weight; }
// -----------------------------------------



// -----------------------------------------
// MARK: [setter 지정]
+ (void)setName:(NSString *) newData { _name = newData; }
+ (void)setAge:(int) newData { _age = newData; }
+ (void)setSex:(char) newData { _sex = newData; }
+ (void)setIsDeveloper:(bool) newData { _isDeveloper = newData; }
+ (void)setWeight:(double) newData { _weight = newData; }
// -----------------------------------------


@end

 

 

 

 

 

4. ViewController.h 소스코드 수정

 

// vim ViewController.h

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

// -----------------------------------------
@interface ViewController : UIViewController
// -----------------------------------------



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

 

 

 

 

 

5. ViewController.m 소스코드 수정

 

// 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: - [뷰 로드 완료]
- (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: [요약 설명]
    /*
    // -----------------------------------------
    1. 사전 S_FinalData 클래스 import 필요 : #import "S_FinalData.h"
    2. set 지정 (ex) : S_FinalData.age = 10
    3. get 호출 (ex) : S_FinalData.age
    // -----------------------------------------
    */
    
    NSLog(@"===============================");
    NSLog(@"[이름 :: %@]", S_FinalData.name);
    NSLog(@"[나이 :: %d]", S_FinalData.age);
    NSLog(@"[성별 :: %c]", S_FinalData.sex);
    NSLog(@"[개발자 :: %s]", S_FinalData.isDeveloper ? "true" : "false");
    NSLog(@"[몸무게 :: %f]", S_FinalData.weight);
    NSLog(@"===============================");
    
}


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

 

 

 

 

 

6. 정상 작동 확인

 

 

 

 

 

 

+ Recent posts