Objective-C에서 연산자를 오버로드 할 수 있습니까?
Objective-C에서 연산자 사용을 재정의 할 수 있습니까?
예를 들면
myClassInstance + myClassInstance
사용자 정의 함수를 호출하여 둘을 추가합니다.
연산자 오버로딩은 Objective-C의 기능이 아닙니다. 두 개의 클래스 인스턴스를 함께 추가 할 수있는 경우 메서드를 제공하고 해당 메서드를 사용하여 추가 할 수 있도록합니다.
Thing *result = [thingOne thingByAddingThing:thingTwo];
또는 클래스가 변경 가능한 경우 :
[thingOne addThing:thingTwo];
아니요, Objective-C에서는이 작업을 수행 할 수 없습니다.
이제 objC의 후속 버전 인 Swift 에서이 작업을 수행 할 수 있습니다 . Objective-C와 Swift가 함께 작동하도록 만들어 졌기 때문에 이것은 흥미로울 수 있습니다.
개체에 대한 구독을 지원할 수 있습니다. 첨자는 하지 연산자 오버로딩하지만 컬렉션 개체에 대한 편리 할 수 있습니다. NSArray와 NSDictionary는 모두 구독을 지원합니다. 예를 들면 :
NSMutableArray *a = [NSMutableArray new]; a[0] = @"Hello";
인덱스 구독을 지원하는 방법은 다음을 구현하는 것입니다.
-(id)objectAtIndexedSubscript:(NSUInteger)idx; -(void)setObject:(id)newObject atIndexedSubscript:(NSUInteger)idx];
아니요, Objective-C는 연산자 오버로딩을 지원하지 않습니다.
첫째, 연산자 오버로딩은 사악 합니다. 둘째, C에는 연산자 오버로딩이 없으며 Objective-C는 소수의 키워드와 메시징 구문 만 추가하는 C의 적절한 상위 집합입니다.
즉, Apple의 개발 환경을 사용하는 경우 Objective-C 대신 Objective-C ++를 사용하면 연산자 오버로딩을 포함하여 C ++의 모든 실수와 잘못된 기능에 액세스 할 수 있습니다. Objective-C ++를 사용하는 가장 간단한 방법은 구현 파일의 확장자를 ".m"에서 ".mm"로 변경하는 것입니다.
참조 URL : https://stackoverflow.com/questions/3613980/can-i-overload-an-operator-in-objective-c
'programing' 카테고리의 다른 글
CopyOnWriteArrayList는 어떻게 스레드로부터 안전합니까? (0) | 2021.01.14 |
---|---|
Android-화면이 아닌 휴대 전화 잠금 해제 이벤트 감지 (0) | 2021.01.14 |
MySQL "주요 효율성"이란? (0) | 2021.01.14 |
두 개의 출력 목록 (즉, 목록의 분할)을 얻는 filter ()와 동등한 파이썬 (0) | 2021.01.14 |
참조 설정 대 출퇴근 대 변경 (0) | 2021.01.14 |