수색…


통사론

  • @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]];


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow