将自定义 UIColor 分配给类属性的问题

用户11043535

我在将自定义 UIColor 传递给我创建的方法时遇到了麻烦。

基本上,我有一个扩展 UIButton 类的类,我可以在其中为类的不同的、通常修改的属性分配我想要的任何颜色。为此,我经常需要将事物的颜色设置为“uiColorParameter.CGColor”或“uiColorParameter”。我的问题是,当我传递自定义颜色作为参数时(因此,而不是 [UIColor whiteColor](例如),我执行 [UIColor colorWithRed:...],应用程序崩溃并显示错误“Thread 1: EXC_BAD_ACCESS (code= 1,地址=0x20)”。

该类在视图控制器中使用了 2 次。

[_beginButton updateButtonBorderWithCornerRadius:10 borderWidth:2.75 borderColor:[RoundedButton appRedColor]];
[_beginButton setEventEffectsWithColor:[UIColor redColor] secondColor:[RoundedButton appRedColor]];

在自定义类 H

@property (assign) UIColor *pColor;
@property (assign) UIColor *sColor;

在自定义类中

- (void)updateButtonBorderWithCornerRadius:(CGFloat)bRadius borderWidth:(CGFloat)bWidth borderColor:(UIColor *)bColor
{
    self.layer.cornerRadius = bRadius;
    self.layer.borderWidth = bWidth;
    self.layer.borderColor = bColor.CGColor;
}

- (void)setEventEffectsWithColor:(UIColor *)fColor secondColor:(UIColor *)sColor
{
    [self setPrimaryBorderColor:fColor];
    [self setSecondaryBorderColor:sColor];

    [self addTarget:self action:@selector(highlight) forControlEvents:UIControlEventTouchDown];
    [self addTarget:self action:@selector(unhighlight) forControlEvents:UIControlEventTouchUpInside];
    [self addTarget:self action:@selector(unhighlight) forControlEvents:UIControlEventTouchDragExit];
}

- (void)highlight
{
    self.layer.borderColor = pColor.CGColor;
    self.titleLabel.textColor = pColor;
}

- (void)unhighlight
{
    self.layer.borderColor = sColor.CGColor; //Where the error occurs
    self.titleLabel.textColor = sColor;
}

- (void)setPrimaryBorderColor:(UIColor *)color
{
    pColor = color;
}

- (void)setSecondaryBorderColor:(UIColor *)color
{
    sColor = color;
}

+ (UIColor *)appRedColor
{
    return [UIColor colorWithRed:0.68 green:0.14 blue:0.09 alpha:1];
}

第一种方法“updateButtonBorder...”完全正常,没有错误。但是,对于第二种方法,无论您如何通过自定义 UIColor(无论是类变量,如我所做的,还是作为文字 [UIColor colorWithRed:...),它都会崩溃。但是,如果我发送一个普通的 [UIColor whiteColor],例如,它会工作得很好......

麦迪

由于您的pColorsColor属性被声明为assign而不是 ,您遇到了内存管理问题strong

它似乎适用于系统颜色,因为这些系统颜色实例可能由 UIKit 保存在内存中。但是您的自定义颜色不是。

改变:

@property (assign) UIColor *pColor;
@property (assign) UIColor *sColor;

至:

@property (nonatomic, strong) UIColor *pColor;
@property (nonatomic, strong) UIColor *sColor;

如果有的话,您应该很少使用assign对象指针。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将自定义函数调用分配给变量

来自分类Dev

将自定义属性分配给动态生成的JS函数

来自分类Dev

如何在Sitecore中将自定义配置文件分配给自定义域用户

来自分类Dev

无法将自定义类分配给Page View Controller

来自分类Dev

如何将自定义对象分配给bytesArray?3号

来自分类Dev

将自定义Wordpress帖子/页面元字段的值分配给JavaScript变量

来自分类Dev

SQL将自定义值分配给具有相似ID的那些行

来自分类Dev

将自定义角色分配给Azure Active Directory系统托管身份

来自分类Dev

将自定义方法分配给WebSocket时如何避免竞争情况?

来自分类Dev

将自定义对象分配给SSIS中的对象类型变量

来自分类Dev

在Notepad ++中将自定义扩展名分配给语言的语法突出显示

来自分类Dev

如何将自定义对象分配给bytesArray?3号

来自分类Dev

C#,DataVisualization.Charting:将自定义标签分配给轴上的值

来自分类Dev

使用回调将自定义fomatter的值分配给jqgrid列

来自分类Dev

如何在设计时将自定义类分配给PropertyGridControl.SelectedObject

来自分类Dev

将自定义URL映射分配给JavaScript变量

来自分类Dev

在Kivy中将自定义方法分配给on_touch_down等

来自分类Dev

如何将自定义模型类型分配给淘汰赛 observable?

来自分类Dev

分配给自定义 init 方法中的属性

来自分类Dev

将自定义属性定义为数据对象

来自分类Dev

将自定义.htaccess文件用于SEO的问题

来自分类Dev

将自定义.htaccess文件用于SEO的问题

来自分类Dev

将自定义对象属性绑定到BooleanBinding

来自分类Dev

将自定义属性添加到Serilog

来自分类Dev

将自定义属性添加到SimpleSAMLPhp

来自分类Dev

将自定义对象属性映射回原始对象

来自分类Dev

将自定义属性添加到Trello卡

来自分类Dev

将自定义属性传递到Aurelia组件

来自分类Dev

将自定义字段属性添加到CsvHelper

Related 相关文章

  1. 1

    将自定义函数调用分配给变量

  2. 2

    将自定义属性分配给动态生成的JS函数

  3. 3

    如何在Sitecore中将自定义配置文件分配给自定义域用户

  4. 4

    无法将自定义类分配给Page View Controller

  5. 5

    如何将自定义对象分配给bytesArray?3号

  6. 6

    将自定义Wordpress帖子/页面元字段的值分配给JavaScript变量

  7. 7

    SQL将自定义值分配给具有相似ID的那些行

  8. 8

    将自定义角色分配给Azure Active Directory系统托管身份

  9. 9

    将自定义方法分配给WebSocket时如何避免竞争情况?

  10. 10

    将自定义对象分配给SSIS中的对象类型变量

  11. 11

    在Notepad ++中将自定义扩展名分配给语言的语法突出显示

  12. 12

    如何将自定义对象分配给bytesArray?3号

  13. 13

    C#,DataVisualization.Charting:将自定义标签分配给轴上的值

  14. 14

    使用回调将自定义fomatter的值分配给jqgrid列

  15. 15

    如何在设计时将自定义类分配给PropertyGridControl.SelectedObject

  16. 16

    将自定义URL映射分配给JavaScript变量

  17. 17

    在Kivy中将自定义方法分配给on_touch_down等

  18. 18

    如何将自定义模型类型分配给淘汰赛 observable?

  19. 19

    分配给自定义 init 方法中的属性

  20. 20

    将自定义属性定义为数据对象

  21. 21

    将自定义.htaccess文件用于SEO的问题

  22. 22

    将自定义.htaccess文件用于SEO的问题

  23. 23

    将自定义对象属性绑定到BooleanBinding

  24. 24

    将自定义属性添加到Serilog

  25. 25

    将自定义属性添加到SimpleSAMLPhp

  26. 26

    将自定义对象属性映射回原始对象

  27. 27

    将自定义属性添加到Trello卡

  28. 28

    将自定义属性传递到Aurelia组件

  29. 29

    将自定义字段属性添加到CsvHelper

热门标签

归档