objective-c - ARC 不允许将“int”隐式转换为“UILabel *”
问题描述
我在下面的代码中收到编译错误“ARC 不允许将 'int' 隐式转换为 'UILabel *'”。
UILabel* (^makeLabel)(CGFloat, CGFloat, CGFloat, CGFloat, NSString*) = ^(CGFloat x, CGFloat y, CGFloat w, CGFloat h, NSString* title) {
UILabel* label = [[UILabel alloc] init];
label.frame = CGRectMake(x, y, w, h);
label.text = title;
label.font = [UIFont systemFontOfSize:14];
return label;
};
UILabel* lblEmail = mekeLabel(30, 100, 100, 30, @"이메일");
我应该怎么做才能解决这个问题?
解决方案
您的代码中有错字。你应该打电话makeLabel(30, 100, 100, 30, @"이메일");
。您收到此错误的原因mekeLabel
是被视为稍后声明的块。Objective-C 中int
的块默认返回。
推荐阅读
- webrtc - 我们如何让 WebRTC 与 VPN 一起工作(已尝试 TURN 解决方案)
- c++ - 如何调试 atan2 中的段错误?
- cryptography - 如果自定义 CSP dll 依赖于另一个自定义 dll,为什么它不被 Adobe Reader 或 Word 等应用程序接受?
- reactjs - 在 Jest 中模拟 WithRouter
- javascript - 使用 jQuery 以毫秒计算两次时间
- regex - 如果 a a1 匹配 B:B 中的任何单元格,则 C
- google-cloud-storage - Google Cloud API Gateway 端点如何从 Cloud Storage 文件传送数据?
- typescript - 我的项目有 tsx 和 ts 文件,但我想在测试文件中禁用 ts
- python - 使用余弦核的 SVM - 带有狗和猫图像的数据集
- java - 在 Java 中输入命令行参数后,如何创建代码以使 c^2 = a^2 + b^2 中的 c 成为最长边?