비디오: 엑스코드 스위프트 기초 부터 교육 인강 사용법 강좌 강의 배우기 2024
흥미롭게도 Objective-C는 iOS 응용 프로그램의 기존 클래스에 자신의 메서드를 추가 할 수있게합니다. 당신이 쓰지 않은 것. 클래스에 추가 메소드를 추가하면 특정 상황에서만 새 비헤이비어가 사용되는 상황에서 유용합니다.
예를 들어, 특정 응용 프로그램 (예: palindrome checker)이 다루는 문자열을 거의 모두 되돌려 야 할 필요가 있습니다.
추가 역방향 메소드를 사용하여 NSString의 고유 한 서브 클래스를 생성하기 위해 프로그램을 복잡하게 만들 수 있습니다. 오히려 원래 클래스에 새 비헤이비어를 추가하는 것이 훨씬 더 편리 할 수 있습니다. NSString 자체에 역방향 메소드를 추가 할 수 있다면 좋지 않을까요?
프레임 워크 클래스이고 소스 코드가 없으므로 원래 인터페이스 나 구현 NSString을 수정할 수 없습니다. 그러나 새 범주를 정의하여 NSString 클래스 (또는 다른 클래스)를 확장 할 수 있습니다. PostfixAll 파일에서. m NSString 클래스가 다음과 같이 reverse라는 메서드로 확장되었다는 것을 알 수 있습니다:
@interface NSString (ReversibleString) - (NSString *) reverse; -d
보시다시피 카테고리 정의는 클래스에 대한 인터페이스 정의와 매우 유사합니다. 실제로 범주의 메서드에 대한 구현을 제공하는 것은 메서드가 @implementation 블록으로 묶여 있다는 점에서 클래스의 구현을 제공하는 것과 매우 유사합니다.
아래의 (파일의 역순으로 코드를 포함하고있는) 범주의 구현 블록 (PostfixAll.m 파일에서)을 볼 수 있습니다:
= 0; i--) {NSString * oneCharString = [자체 substringWithRange: NSMakeRange (i, 1)]; 마지막으로, 카테고리에서 정의 된메소드의
사용은 다른 메소드의 사용과 다르지 않다. PostfixAll의 main 함수에서 가져온 다음 코드 스 니펫. m: NSLog (@ "반전 된 문자열 인쇄 % @