gpt4 book ai didi

uibutton - NSMutableDictionary 以 UIButton* 作为键 - iPhone 开发

转载 作者:行者123 更新时间:2023-12-02 16:30:04 25 4
gpt4 key购买 nike

我是 iPhone 开发新手,我有一个问题,可能有一个非常简单的答案。我正在尝试向 View 添加按钮,并且这些按钮与我定义的自定义类相关联。当我将按钮添加到 View 中时,我想知道这些按钮对应什么类。这是因为当我按下按钮时,我需要获取有关该类的一些信息,但消息的接收者是另一个类。我无法在网上找到有关我遇到的错误的信息。我遇到的问题是我正在尝试创建一个 NSMutableDictionary,其中键的类型为 UIButton*,值的类型为我的自定义类型:

   // create button for unit
UIButton* unitButton = [[UIButton alloc] init];
[sourceButtonMap setObject:composite forKey:unitButton];

当然,sourceButtonMap是在类中定义的,并在init函数中初始化为sourceButtonMap = [[NSMutableDictionary alloc] init];

当我尝试添加键值对时出现的错误是:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIButton copyWithZone:]: unrecognized selector sent to instance 0x3931e90'

发生这种情况是因为我无法将 UIButton* 存储为键吗?谁能指出我为什么会收到此错误?谢谢大家,

aa

最佳答案

我发现的一种方法是构造一个 NSValue 来用作键。要创建它,请使用:

[NSValue valueWithNonretainedObject:myButton]

这里需要注意的是,如果按钮被垃圾收集,则该键将保存无效引用。

您可以在循环字典时再次获取对 UIButton 的引用,如下所示:

for (NSValue* nsv in myDict) {
UIButton* b = (UIButton*)[nsv nonretainedObjectValue];
...
}

关于uibutton - NSMutableDictionary 以 UIButton* 作为键 - iPhone 开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2820366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com