태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
2017.10.23 08:30


 [ios/design pattern] private 메서드 정의하기


category class extension, class extension, Design Pattern, IMPLEMENTATION, IOS, Objective-C, Private, private category, private prefix, private 메서드 정의하기, private 접두어, Public, p_, Warning, [ios/design pattern] private 메서드 정의하기, 접근 제어, 카테고리 클래스 확장


-

Objective-C 은 public/private 같은 접근제어하는 것이 없음.

다시 이야기하자면 모든 method 가 사실 public 이다.



-

.m 파일의 implemetation 에서만 함수를 정의해서 사용하는 것은 private 으로 여길 수 있겠지만,

.h 에 선언되어 있지 않기 때문에 warning 이 표시된다. ( 실제로는 option 에 따라 warning 이 표시 안 되기도 )

( iOS 는 동적 언어라 compile 은 되고 실행도 되긴 한다. )



-

이를 해결하기 위해서는 Private 전용 Category 를 만들고,

모든 private method 에는 p_ 접두어를 붙이는 것으로 해결할 수 있다.

// .m 파일

@interface ClassName(Private)

- (void)p_privateMethod;

@end


@implementation ClassName(Private)

-(void)p_privateMethod{

     // do something

}

@end


@implementation ClassName

     // do something

@end



-

Category 를 따로 만들기 싫다면, Category Class Extension 을 사용할 수도 있다.

@interface ClassName()

-(void)p_privateMethod;

@end


@implementation ClassName

// do something


-(void)p_privateMethod{

     // do something

}

@end


더보기



저작자 표시 비영리 변경 금지
신고

댓글을 달아 주세요


Posted by 돼지왕왕돼지