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

[ios] abstract class 만드는 방법

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

 [ios] abstract class 만드는 방법


doesnotrecognizeselector, exception, init, Interface, ios abstract, isMemberOfClass, nil, objective-c abstract class, [ios] abstract class 만드는 방법, [self doesNotRecognizeSelector:_cmd], _cmd

-

방법 1


.h 파일에 상속에서 구현해야 할 interface 들을 구현하고,

.m 파일에서는 해당 interface 함수들에서 Exception 을 던지도록 함으로써 간접적으로 만들 수 있다.



-

방법 2


마찬가지로 .h 파일에 상속에서 구현해야 할 interface 들을 구현한다.

.m 파일에서는 init 함수에서 isMemberOfClass 함수를 통해 abstract class 에서는

[self doesNotRecognizeSelector:_cmd] 함수로 Exception 을 날리고,

nil 을 return 해준다.

if ([self isMemberOfClass:[AbstractClass class]){

     [self doesNotRecognizeSelector:_cmd];

     return nil;

} else{

     self = [super init];

     // initialize

}



-

방법1의 경우 Instance 생성은 되지만, method 호출이 안 되는 방법이고,

방법2의 경우 Instance 생성 자체를 막아 버리고, method 에 대한 처리는 하지 않는 방법이다.

간결성, instance 생성 여부를 막는 점을 볼 때 방법2가 더 괜찮아 보인다.




반응형

댓글