[Objective-C] 카테고리 클래스 추가하기

카테고리는 기존에 정의된 어떤 클래스에 쉽게 확장을 할수 있도록 해줍니다.

직접 만든 클래스나, Objective-c에서 제공되는 UILabel, UIButton, UIView 등 UI 클래스들에 대해서 모두 확장이 가능합니다.

Objective-c 일반적인 클래스는 정의부(.h)와 구현부(.m)로 이루어 집니다.
구현부에 사용된 함수들이 범용적으로 사용 되거나, 내용이 많아 질경우, 유지보수가 어렵게 됩니다.

Objective-C에서는 이번부분을 카테고리 클래스를 생성할수 있게 해줌으로써 개발자들에게 유지보수를 용의하게 해줍니다.

사용법은 간단합니다.

AClass.h
AClass.m

클래스 생성 후 네트워크 관련 함수, 문자열 관련 함수를 AClass.m 구현부에 작성합니다.

그다음에 AClass+Network , AClass+String 를 정의부와 구현부를 만들어줍니다.

AClass.m에 작성된 함수 중 네트워크 관련함수는 AClass+Network, 문자열 관련 함수는 AClass+String으로 옴깁니다.

+ 클래스 메스드로 정의함으로써, AClass+Network를 바로 사용할수 도 있습니다.

또한, Fouundation이나 UIKit 등에 있는 클래스도 확장이 가능합니다.

예를 들어, UIImage 의 사이즈 조절하는 함수를 만들었다면, 정의부와 구현부와 아래와 같이 만들고 사용할수 있습니다.


@interface UIImage (ResizeAdditions)


+(UIImage *)resizeImage:(UIImage *)image width:(float)resizeWidth height:(float)resizeHeight;



@implementation UIImage (ResizeAdditions)


+(UIImage *)resizeImage:(UIImage *)image width:(float)resizeWidth height:(float)resizeHeight
{
    
    UIGraphicsBeginImageContext(CGSizeMake(resizeWidth, resizeHeight));
    
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    CGContextTranslateCTM(context, 0.0, resizeHeight);
    
    CGContextScaleCTM(context, 1.0, -1.0);
    
    
    CGContextDrawImage(context, CGRectMake(0.0, 0.0, resizeWidth, resizeHeight), [image CGImage]);
    
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return scaledImage;
    

}

-----------------------------------------------------------------------------

사이즈 조정이 필요한 UIImage가 있다면, 필요한 곳에서 사용할수 있습니다.
    UIImage *resizeImage =[UIImage resizeImage:imageA width:320 height:320];



댓글

주간 인기글

카드뉴스 마케팅 팁

[ubuntu] 신규 계정에 sudo 권한 추가하기

[AWS] WinSCP 를 이용해 Linux 인스턴스로 파일 전송하기

HTML 템플릿을 인쇄용으로 가공하기

[정보] 인스타그램은 당신의 소리를 '듣고' 있을 수도 있습니다