본문 바로가기
프로그래밍 놀이터/iOS

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

by 돼지왕 왕돼지 2017. 10. 23.
반응형

 [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




반응형

댓글