💻 Programming 개발/🍎 iOS 개발, Swift

[Objective-C] .h와 .m 파일의 연결성

킴디 kimdee 2023. 1. 30. 15:40
반응형

 

 

 


 

Xcode에서 obj-C 프로젝트간의 연결성과 씬 뒤에 숨겨진 코드를 이해하는 것이 중요하다. 클래스의 public이랑 private한 파트를 나누는데 사용이 됨. .h는 헤더 파일로 마치 API처럼 클래스의 public 선언을 하는 파일이고, .m파일은 비공개되는 구현을 함.

 

다른 파일에서 함수를 호출하려고 할 때 참조를 위해 .h 파일을 import 해와야 한다.

 

#import <Foundation/Foundation.h>

 

.h 파일에서 public @property를 클래스에 선언할 수 있음.

 

@property (strong, nonatomic) NSString *something;

 

이 @property는 NSString 클래스 오브젝트의 포인터. 모든 오브젝트는 힙에 있으므로 이 있어야함. 별개로 이 의 뜻은 오브젝트 포인트를 프로퍼티가 nil로 설정되기 전까지 메모리에 유지하라는 뜻. nonatomic은 이 프로퍼티에 접근하는 것이 스레드 세이프하지 않다는 것. nonatomic이 아니면 컴파일러가 코드 잠금을 만들 것.

 

.m 파일은 이 프로퍼티의 게터와 세터 메서드가 씬 뒤에서 자동적으로 생성해서 @property의 인스턴스를 접근가능하게 만듬.

 

@synthsize something = _somthing;
- (NSString *) something
{
  return _something;
}
- (void)setSomething:(NSString *)something
{
  _something = something;
}

 

기본적으로 지원(backing) 변수 이름은 프로퍼티 이름과 동일하고 앞에 언더스코어(_)를 붙인 형태. 메서드를 오버라이드해서 다른 걸 하는 게 아니라면 위 코드를 작성할 필요는 없음.

 

새로운 메서드를 작성할 때는 .h 파일 안에 선언을 두어야함.

 

- (int)newMethod:(ArgType *)arg;

그리고 실제 자세한 부분은 .m 파일에 작성.

 

- (int)newMethod:(ArgType *)arg
{
  int num = 0;
  # something in the method...
  return num;
}

비공개로 선언할 때 .m 파일 안에 이런 식으로 작성.

 

@interface Something()
#private declarations....
@end

다른 코드를 처음으로 읽을 때 .h 파일을 보고 프로젝트의 개요를 볼 수 있음. 자세하게 보려면 .m 파일.

 


본 글은 아래 글의 번역, 요약 글입니다.

* 개인 개발 블로그에 올린 내용이기도 합니다. 

 

 

Connection between .h and .m files in Objective-C

When first open an objective-C project in X-code, the .h and .m files look confusing. It is important to understand the simple connections…

victorleungtw.medium.com

 


 

 

오늘도 읽어주셔서 감사합니다. 

 

궁금하거나 나누고 싶은 얘기가 있으시면 댓글로 알려주세요!

재밌게 읽으셨다면 공감과 구독은 큰 힘이 됩니다. 

 

항상 감사합니다.

 

반응형