[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 의 사이즈 조절하는 함수를 만들었다면, 정의부와 구현부와 아래와 같이 만들고 사용할수 있습니다.
직접 만든 클래스나, 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];
댓글
댓글 쓰기