gpt4 book ai didi

ios自定义 block 无法为arm64编译

转载 作者:行者123 更新时间:2023-11-29 12:29:07 25 4
gpt4 key购买 nike

当从 armv7s 更改为 arm64 时,我无法编译自定义 block 。我怎样才能解决这个问题?谢谢。这是我的代码:

//typedef NSInteger (^ActionSheetPickerNumberOfRowsBlock)

(ActionSheetPicker *picker);
ActionSheetPickerNumberOfRowsBlock numberOfRows = ^(ActionSheetPicker *picker) {
return 29;
};

最佳答案

29 默认类型为 int,因此编译器推断 block 的返回类型为 int,而不是 NSInteger 根据需要。 NSInteger 与armv7 中的int 相同,但不是arm64。

this table可以看出:

  • int 在 armv7 和 arm64 中都是 32 位的
  • NSInteger 在 armv7 中是 32 位的,在 arm64 中是 64 位的
  • long 在 armv7 中是 32 位,在 arm64 中是 64 位(与 NSInteger 相同)

所以你可以这样做:

return 29l;

return (NSInteger)29;

或者在 block 字面量中显式指定返回类型:

^NSInteger(ActionSheetPicker *picker) {
return 29;
};

关于ios自定义 block 无法为arm64编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28262781/

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