objective-c - 尝试创建 UIColor 时发送到类的无法识别的选择器

标签 objective-c ipad colors uicolor

我正在尝试使用十六进制颜色代码创建自定义颜色。我有一个名为 UIColor+Hex 的单独类,它接受一个十六进制字符串并将其转换为颜色代码并返回一个 UIColor。

UIColor+Hex.h

#import <UIKit/UIKit.h>

@interface UIColor (Hex)

+ (UIColor *)colorWithHexString:(NSString *)hex;

@end

UIColor+Hex.m

#import "UIColor+Hex.h"

@implementation UIColor (Hex)
+ (UIColor *)colorWithHexString:(NSString *)hex
{
    if ([hex length]!=6 && [hex length]!=3)
    {
        return nil;
    }

    NSUInteger digits = [hex length]/3;
    CGFloat maxValue = (digits==1)?15.0:255.0;

    NSUInteger redHex = 0;
    NSUInteger greenHex = 0;
    NSUInteger blueHex = 0;

    sscanf([[hex substringWithRange:NSMakeRange(0, digits)] UTF8String], "%x", &redHex);
    sscanf([[hex substringWithRange:NSMakeRange(digits, digits)] UTF8String], "%x", &greenHex);
    sscanf([[hex substringWithRange:NSMakeRange(2*digits, digits)] UTF8String], "%x", &blueHex);

    CGFloat red = redHex/maxValue;
    CGFloat green = greenHex/maxValue;
    CGFloat blue = blueHex/maxValue;

    return [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
}

@end

然后我将 UIColor+Hex.h 导入到我的其他一个类中,并通过以下方式调用它:

[self setSelectedfillColor:[UIColor colorWithHexString:@"FF0000"].CGColor];

每当我点击这段代码时,我都会收到这个错误...

'NSInvalidArgumentException', reason: '+[UIColor colorWithHexString:]: unrecognized selector sent to class 0x873d60'

我已经尝试了所有我能想到的方法,但我仍然不断收到该错误。任何人都知道为什么会发生这种情况?

最佳答案

-ObjC -all_load 添加到build设置下项目中的其他链接器标志。

-ObjC 允许静态库使用 objective-c 特定的东西,比如 kvc 或 categories

-all_load 解决了 gcc/llvm 中的一个错误,其中 -ObjC 没有被正确使用。

https://developer.apple.com/library/mac/#qa/qa2006/qa1490.html

关于objective-c - 尝试创建 UIColor 时发送到类的无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13628230/

相关文章:

objective-c - UISwipeGestureRecognizer 适用于触摸 1 和 2,但不适用于触摸 3

iphone - UITableViewCell imageView 不显示

python - 更改seaborn分布线的颜色

python - Python 中的 NSStatusItem

ios - Objective-C:如何在锁定人像方向锁定后拍摄后固定图像方向

ios - Xcode Today Extension 卡在 "Failed to inherit CoreMedia permissions"错误

ios - 如何在iOS模拟器中为iPad启用拆分键盘

iOS 应用程序 - 尝试从图库中获取 iOS 照片但出现错误

python - 更改与确定颜色接触的样本像素的颜色 - python

colors - Sass 将字符串转换为颜色