iOS 개발 에서 category 에 대한 애플 리 케 이 션 을 간단하게 소개 합 니 다.
3222 단어 iOS
여기,base 의 class 를 잘 선택해 야 합 니 다.다음 과 같 습 니 다.
하나의 디자인 이 아무리 완벽 하 더 라 도 예측 하지 못 한 수 요 를 만 날 수 밖 에 없다.그러면 기 존의 종 류 를 어떻게 확장 할 수 있 을 까?물론 상속 은 좋 은 선택 이다.그러나 Objective-C 는 Catagory 라 는 특별한 방식 을 제공 하여 이미 존재 하 는 클래스 에 새로운 행 위 를 동적 으로 추가 할 수 있 습 니 다.이렇게 하면 류 의 원래 의 기초 위 에서 비교적 작은 변동 을 확보 하면 필요 한 기능 을 증가 시 킬 수 있다.Category 를 사용 하여 클래스 를 확장 할 때 원본 코드 에 접근 할 필요 도 없고 하위 클래스 를 만 들 필요 도 없습니다.그러면 시스템 이 제공 하 는 클래스 를 확장 할 수 있 습 니 다.Category 는 간단 한 방식 으로 클래스 와 관련 된 방법의 모듈 화 를 실현 하고 서로 다른 클래스 방법 을 서로 다른 분류 파일 에 배정 합 니 다.
간단 한 예 를 통 해 Category 를 어떻게 사용 하 는 지 봅 시다.
지금 저희 가 마 이 클 라 스 라 는 클래스 가 있어 요.
#import
@interface MyClass : NSObject
-(void) myPrint;
@end
#import "MyClass.h"
@implementation MyClass
-(void) myPrint{
NSLog(@"myPrint ");
}
@end
그것 은 인 스 턴 스 방법 이 있 습 니 다.my Print,잠시 후에 확장 후에 호출 할 수 있 습 니 다.자,위의 MyClass 가 생 긴 후에 우 리 는 하위 클래스 를 추가 하지 않 고 MyClass 류 를 수정 하지 않 은 상태 에서 Hello World 방법 을 추가 해 야 합 니 다.어떻게 추가 합 니까?두 개의 파일 만 추가 하면 MyClass+HelloWorld.h MyClass+Hello World.m.
설명 파일 과 구현 파일 에"()"로 Category 의 이름 을 묶 습 니 다.원래 클래스 이름+Category"는 약 정 된 파일 이름 입 니 다.
이 두 파일 이 어떻게 구현 되 는 지 보 세 요.Xcoed 에 command+N,새 파일 을 누 르 고 Objective-C category 방식 으로 클래스 를 만 듭 니 다.그러면 Xcode 는 자동 으로 이름 을 정 한 파일 을 만 들 수 있 습 니 다.
Category on 의 클래스 는 MyClass 입 니 다.잘 골 랐 습 니 다.
그러면 Xcode 가 MyClass+HelloWorld.h 를 만들어 줍 니 다. MyClass+Hello World.m 두 파일 입 니 다.
그럼 지금 Hello World 방법 을 추가 하 겠 습 니 다.실 현 된 코드 를 보면 다음 과 같다.
#import "MyClass.h"
@interface MyClass (HelloWorld)
-(void)HelloWorld;
@end
#import "MyClass+HelloWorld.h"
@implementation MyClass (HelloWorld)
-(void)HelloWorld{
NSLog(@" !");
}
@end
main 에서 호출
MyClass *myclass = [[[MyClass alloc]init]autorelease];
[myclass HelloWorld];
[myclass myPrint];
인쇄 결과 실행:
2012-08-09 11:24:16.697 objectiveC[16053:403] !
2012-08-09 11:24:16.699 objectiveC[16053:403] myPrint
그 카 테 고리 의 사용 장면 은 다음 과 같 습 니 다.
1.유형 은 여러 가지 방법 으로 이 루어 지 는데 이런 방법 은 서로 다른 팀 의 구성원 이 이 루어 져 야 한다.
2.기본 라 이브 러 리 의 클래스 를 사용 할 때 이러한 클래스 를 계승 하고 싶 지 않 고 방법 만 추가 하고 싶 을 때.
Category 는 위의 수 요 를 실현 할 수 있 습 니 다.물론 Category 를 사용 하 는 것 도 주의해 야 할 문제 입 니 다.
1.Category 는 원본 클래스 의 인 스 턴 스 변 수 를 방문 할 수 있 지만 인 스 턴 스 변 수 를 추가 할 수 없습니다.변 수 를 추가 하려 면 계승 을 통 해 하위 클래스 를 만 듭 니 다.
2.Category 는 원 초적 인 방법 을 다시 불 러 올 수 있 습 니 다.이렇게 하 는 것 을 추천 하지 않 습 니 다.그러면 원 초적 인 방법 을 덮어 쓸 수 있 습 니 다.다시 불 러 오 려 면 하위 클래스 를 계승 하여 만 듭 니 다.
3.일반 인터페이스 와 차이 가 있 는 것 은 Category 의 실현 파일 에서 의 인 스 턴 스 방법 은 호출 하지 않 으 면 모든 성명 의 모든 방법 을 실현 하지 않 아 도 된다 는 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.