1. 사전 프로젝트 코드 세팅하고 오기
https://growingsaja.tistory.com/869
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. 정상 작동 확인
'Development > iOS' 카테고리의 다른 글
[Objective-C] 입문하기 - 07 : for , while 반복문과 if else , switch case default 조건문 실습 (0) | 2023.06.23 |
---|---|
[Objective-C] 입문하기 - 06 : Array 기본 사용 예제 및 NSMutableArray 가변 배열 관련 &배열 중복값 제거 실습 (0) | 2023.06.23 |
[Objective-C] 입문하기 - 04 : 간단한 클래스와 인스턴스를 만들어보고 실행해보기 (0) | 2023.06.22 |
[Objective-C] 프로젝트 기본 세팅 소스코드 예시 (0) | 2023.06.15 |
[Objective-C] 입문하기 - 03 : 버튼 만들고, 누르면 alert 창 뜨게 하는 앱 만들기 (0) | 2023.06.15 |