我可以使用Categories来添加类方法吗?

Inf*_*ris 3 iphone cocoa objective-c categories

我想为UIColor添加一些类方法.我已经实现了它们,一切都编译得很好,但在运行时我收到以下错误:

因未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'+ [UIColor colorWithHex:]:无法识别的选择器发送到类0x8d1d68'

这是头文件:

@interface UIColor (Hex) 
+ (UIColor*) colorWithHex: (NSUInteger) hex;
@end
Run Code Online (Sandbox Code Playgroud)

这是实施:

#import "UIColor+Hex.h"


@implementation UIColor (Hex)

+ (UIColor*) colorWithHex: (NSUInteger) hex {
    CGFloat red, green, blue, alpha;

    red = ((CGFloat)((hex >> 16) & 0xFF)) / ((CGFloat)0xFF);
    green = ((CGFloat)((hex >> 8) & 0xFF)) / ((CGFloat)0xFF);
    blue = ((CGFloat)((hex >> 0) & 0xFF)) / ((CGFloat)0xFF);
    alpha = hex > 0xFFFFFF ? ((CGFloat)((hex >> 24) & 0xFF)) / ((CGFloat)0xFF) : 1;

    return [UIColor colorWithRed: red green:green blue:blue alpha:alpha];
}
@end
Run Code Online (Sandbox Code Playgroud)

我发现了一些关于将-all_load添加到链接器标志的内容,但这样做会得到相同的结果.这是在iPhone上,如果不清楚的话.

Dav*_*ong 8

是的,你可以这样做.您可能没有将.m编译到项目中.


Inf*_*ris 0

嗯。将构建配置更改为发布并返回调试后,它的工作就像一个魅力。奇怪的。