iOS 개발 에서 category 에 대한 애플 리 케 이 션 을 간단하게 소개 합 니 다.

3222 단어 iOS
category 파일 생 성:

여기,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 의 실현 파일 에서 의 인 스 턴 스 방법 은 호출 하지 않 으 면 모든 성명 의 모든 방법 을 실현 하지 않 아 도 된다 는 것 이다.

좋은 웹페이지 즐겨찾기