1. 시작 전에 프로젝트 코드 기본 세팅하고 오기
https://growingsaja.tistory.com/869
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 구조체를 통한 데이터 그룹 관리 예시 결과
'Development > iOS' 카테고리의 다른 글
[Objective-C] 앱 만들기 입문 - 2 : 세로 정렬 카드뷰 만들고 안에 문구 및 활성화 스위치 넣기 (0) | 2023.06.30 |
---|---|
[Objective-C] 앱 만들기 입문 - 1 : 하단 메뉴탭바 만들기 (0) | 2023.06.30 |
[Objective-C] 입문하기 - 14 : 날짜 데이터 활용 및 타이머 구현 실습 (0) | 2023.06.27 |
[Objective-C] 입문하기 - 13 : init 클래스 생성자 초기화 및 인스턴스 초기 데이터와 함께 생성해 사용하기 (0) | 2023.06.27 |
[Objective-C] 입문하기 - 12 : Encoding, Decoding 예제 (0) | 2023.06.26 |