isKindOfClass와 isMemberOfClass의 iOS 차이점
의 차이는 무엇입니까?isKind(of aClass: AnyClass)
및 그isMember(of aClass: AnyClass)
Swift에서 기능합니까?
목표-C의 원래 질문
의 차이는 무엇입니까?
isKindOfClass:(Class)aClass
및 그isMemberOfClass:(Class)aClass
기능하고 있습니까?하나는 글로벌하고 다른 하나는 클래스 매치인 것처럼 작은 것이지만, 어느 쪽이 좋은지 특정해 주셨으면 합니다.
isKindOfClass:
돌아온다YES
수신기가 지정된 클래스의 인스턴스 또는 지정된 클래스에서 상속된 클래스의 인스턴스인 경우.
isMemberOfClass:
돌아온다YES
수신기가 지정된 클래스의 인스턴스인 경우에만.
사용하는 대부분의 시간isKindOfClass:
코드를 서브클래스에서도 사용할 수 있도록 합니다.
NSObject Protocol Reference에서는 이러한 방법에 대해 조금 더 설명합니다.
isKindOfClass:
개체가 지정된 클래스에서 상속되는지 여부를 나타냅니다.isMemberOfClass:
오브젝트가 특정 클래스의 인스턴스인지 여부를 나타냅니다.
[[NSMutableData data] isKindOfClass:[NSData class]]; // YES
[[NSMutableData data] isMemberOfClass:[NSData class]]; // NO
가정하다
@interface A : NSObject
@end
@interface B : A
@end
...
id b = [[B alloc] init];
그리고나서
[b isKindOfClass:[A class]] == YES;
[b isMemberOfClass:[A class]] == NO;
기본적으로는-isMemberOfClass:
인스턴스가 정확히 지정된 클래스의 경우 true입니다.-isKindOfClass:
인스턴스가 정확히 지정된 클래스의 인스턴스이거나 인스턴스의 상위 중 하나가 지정된 클래스의 인스턴스일 경우 true입니다.
-isMemberOfClass:
거의 사용되지 않습니다.
isKindOfClass: 수신기가 지정된 클래스의 인스턴스인지 또는 해당 클래스에서 상속된 클래스의 인스턴스인지를 나타내는 부울 값을 반환합니다.
is Member Of Class: 수신기가 특정 클래스의 인스턴스인지 여부를 나타내는 부울 값을 반환합니다.
isKindOfClass-> 객체가 해당 클래스의 인스턴스 또는 상속된 클래스의 인스턴스일 경우 YES를 반환합니다.
isMemberOfClass: 객체가 해당 클래스의 인스턴스인 경우 YES를 반환하지만, 개체에서 상속된 클래스의 인스턴스인 경우 No를 반환합니다.
jtbandes answer에서는 예시로 충분합니다.
클래스 클러스터 때문에 isMemberOfClass는 사용자가 예상하지 못한 응답을 제공할 수 있습니다.대부분의 경우 최선의 선택은 -(BOOL) conformsToProtocol:(SEL)aSelector 또는 -(BOOL) conformsToProtocol:(Protocol*)aProtocol입니다.즉, 클래스/서브클래스를 테스트하는 것보다 요구에 대응할 수 있는지 테스트하는 것이 좋습니다.
NSObject 클래스 및 프로토콜에 대한 자세한 내용은 다음 Apple 문서를 참조하십시오.
언급URL : https://stackoverflow.com/questions/3653929/ios-difference-between-iskindofclass-and-ismemberofclass
'programing' 카테고리의 다른 글
Xcode 10: 이 실행 파일의 올바른 프로비저닝 프로파일을 찾을 수 없습니다. (0) | 2023.04.22 |
---|---|
Windows에서 ssh-add를 실행하는 방법 (0) | 2023.04.22 |
컬럼(SQL Server 2008 R2)에 고유한 제약조건을 작성하려면 어떻게 해야 합니까? (0) | 2023.04.22 |
setNeedsLayout vs. setNeedsUpdateConstraints 및 레이아웃IfNeeded vs updateConstraints필요한 경우 (0) | 2023.04.22 |
OleDB 및 Excel 혼합 데이터 유형: 데이터 누락 (0) | 2023.04.22 |