Objective-C Language
카테고리
수색…
통사론
@interface ClassName (categoryName) // ClassName은 확장 할 클래스입니다.
// 메소드와 프로퍼티 선언
@종료
비고
메서드 이름의 충돌을 피하기 위해 접두어 (예에서 xyz_
를 사용하는 것이 좋습니다. 같은 이름의 메소드가 존재하는 경우는, 실행시에 사용되는 메소드는 미정 도리입니다.
단순 카테고리
NSArray에서 간단한 카테고리의 인터페이스 및 구현. 필터는 숫자를 필터링하는 단일 메소드를 사용합니다.
향후 NSArray
메서드를 덮어 쓰지 않도록 메서드에 접두사 ( PF
)를 추가하는 것이 좋습니다.
@interface NSArray (PFFilter)
- (NSArray *)pf_filterSmaller:(double)number;
@end
@implementation NSArray (PFFilter)
- (NSArray *)pf_filterSmaller:(double)number
{
NSMutableArray *result = [NSMutableArray array];
for (id val in self)
{
if ([val isKindOfClass:[NSNumber class] && [val doubleValue] >= number)
{
[result addObject:val];
}
}
return [result copy];
}
@end
클래스 메소드 선언하기
헤더 파일 UIColor+XYZPalette.h
:
@interface UIColor (XYZPalette)
+(UIColor *)xyz_indigoColor;
@end
및 구현 UIColor+XYZPalette.m
:
@implementation UIColor (XYZPalette)
+(UIColor *)xyz_indigoColor
{
return [UIColor colorWithRed:75/255.0f green:0/255.0f blue:130/255.0f alpha:1.0f];
}
@end
카테고리가있는 속성 추가하기
속성은 Objective-C 런타임의 기능인 관련 객체를 사용하여 범주로 추가 할 수 있습니다.
retain, nonatomic
의 속성 선언은 objc_setAssociatedObject
의 마지막 인수와 일치합니다. 설명 을 위해 다른 기존 오브젝트 에 오브젝트 첨부를 참조하십시오.
#import <objc/runtime.h>
@interface UIViewController (ScreenName)
@property (retain, nonatomic) NSString *screenName;
@end
@implementation UIViewController (ScreenName)
@dynamic screenName;
- (NSString *)screenName {
return objc_getAssociatedObject(self, @selector(screenName));
}
- (void)setScreenName:(NSString *)screenName {
objc_setAssociatedObject(self, @selector(screenName), screenName, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
프로토콜 준수
표준 클래스에 프로토콜을 추가하여 기능을 확장 할 수 있습니다.
@protocol EncodableToString <NSObject>
- (NSString *)toString;
@end
@interface NSDictionary (XYZExtended) <EncodableToString>
@end
@implementation NSDictionary (XYZExtended)
- (NSString *)toString {
return self.description;
}
@end
XYZ
는 프로젝트의 접두어입니다.
XCode에 범주 만들기
카테고리는 실제 객체를 하위 클래스 화하거나 변경하지 않고 객체에 몇 가지 추가 기능을 추가 할 수있는 기능을 제공합니다.
예를 들어 사용자 정의 글꼴을 설정하려고합니다. UIFont
클래스에 기능을 추가하는 범주를 만듭니다. XCode 프로젝트를 열고 File
-> New
-> File
클릭하고 Objective-C file
선택하고 다음을 클릭하십시오. 카테고리 이름을 입력하십시오. "CustomFont"라고 말하면 UIFont로 범주와 클래스로 파일 유형을 선택한 다음 "다음"을 클릭 한 다음 "만들기"를 클릭하십시오. "
카테고리 방법 선언 : -
새 카테고리의 헤더 파일을 보려면 "UIFont + CustomFonts.h"를 클릭하십시오. 메서드를 선언하려면 인터페이스에 다음 코드를 추가합니다.
@interface UIFont (CustomFonts)
+(UIFont *)productSansRegularFontWithSize:(CGFloat)size;
@end
이제 카테고리 메소드 구현 : -
카테고리의 구현 파일을 보려면 "UIFont + CustomFonts.m"을 클릭하십시오. 다음 코드를 추가하여 ProductSansRegular Font를 설정할 메서드를 만듭니다.
+(UIFont *)productSansRegularFontWithSize:(CGFloat)size{
return [UIFont fontWithName:@"ProductSans-Regular" size:size];
}
카테고리 가져 오기
#import "UIFont+CustomFonts.h"
이제 레이블 글꼴을 설정하십시오.
[self.label setFont:[UIFont productSansRegularFontWithSize:16.0]];