2014-12-08 4 views
13

클래스 기능을 정의 할 수있는 objective-C 카테고리와 마찬가지로 신속한 확장 기능에서 클래스 기능을 정의 할 수 있습니까? 오브젝티브 -C에서신속한 확장 (카테고리)의 클래스 기능

@implementation UIColor (Additions) 

+ (UIColor)colorWithHexString:(NSString *)hexString 
{ 
    // create color from string 
    // ... some code 
    return newColor; 
} 

@end 

무엇 빠른에 해당하는 것입니까?

+0

인스턴스 변수/계산 속성을 사용하지 않는 한 함수를 클래스 함수로 항상 사용하지 않겠습니까? – brainray

+0

Swift 확장 기능을 만드는 방법에 대한 설명은 [이 SO 답변] (http://stackoverflow.com/a/31026358/3681880)을 참조하십시오. – Suragch

답변

22

예, 가능하고 매우 유사합니다. 가장 큰 차이점은 신속 확장명이 지정되지 않은 것입니다.

extension UIColor { 
    class func colorWithHexString(hexString: String) -> UIColor { 
     // create color from string 
     // ... some code 
     return newColor 
    } 
} 
+4

사용자 정의 이니셜 라이저는 Objectice-C 팩토리 메소드가 매핑되는 것이기 때문에보다 신속한 솔루션 일 수 있습니다. –

+1

그게 지금 할거야. 제안 해 주셔서 감사합니다. –

5

레코드 용.

import UIKit 

extension UIColor { 
    convenience init(hexString:String) { 

     // some code to parse the hex string 
     let red = 0.0 
     let green = 0.0 
     let blue = 0.0 
     let alpha = 1.0 

     self.init(red:red, green:green, blue:blue, alpha:alpha) 
    } 
} 

이 지금은 사용할 수 있습니다 : 여기의 위의 솔루션의 코드는

SWIFT :

let clr:UIColor = UIColor(hexString:"000000") 

이론적으로 내가 목표 - C에서 사용할 수 있어야합니다 :

UIColor *clr = [UIColor colorWithHexString:@"000000"]; 
+1

또한 잘못된'hexString'이 제공되면'init'을 실패 할 수 있다는 것에주의하십시오. – Kirsteins