gpt4 book ai didi

ios - 使用 objc_setAssociatedObject 时架构 armv7 的 undefined symbol

转载 作者:行者123 更新时间:2023-11-28 18:35:03 25 4
gpt4 key购买 nike

这是我得到的运行时错误日志:

Undefined symbols for architecture armv7:
"_MyConstantKey", referenced from:
-[LayoutViewController addLabelsAndButtonInBaseView:withLayoutObject:] in LayoutViewController.o
ld: symbol(s) not found for architecture armv7

我正在尝试将一个对象与 UIButton 选择器一起传递。

这是我的代码:

这就是我声明 var 的方式:

extern const char MyConstantKey;
@interface LayoutViewController : UIViewController

我的实现文件:

#import <objc/runtime.h>

以及设置关联对象的相关代码:

UIButton *componentButton = [[UIButton alloc] initWithFrame:baseView.bounds];
objc_setAssociatedObject(componentButton,
MyConstantKey,
layout,
OBJC_ASSOCIATION_RETAIN);
[componentButton addTarget:self
action:@selector(componentButtonPressed:)
forControlEvents:UIControlEventTouchUpInside];
[componentButton setTitle:@"" forState:UIControlStateNormal];

有什么建议吗?有没有我遗漏的框架,

最佳答案

将变量声明为 extern 只会提示编译器该变量可能会在当前编译单元之外的某个地方创建。所以你需要在你的实现文件中实际创建它。另外我认为在这里使用 char* 而不是 char 会更合适:

// .h
extern const char* MyConstantKey;

// .m
const char* MyConstantKey = "MyConstantKey";


objc_setAssociatedObject(componentButton,
(void*)MyConstantKey,
layout,
OBJC_ASSOCIATION_RETAIN);

关于ios - 使用 objc_setAssociatedObject 时架构 armv7 的 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740460/

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