从armv7s更改为arm64时,我无法编译自定义块。我怎么能解决这个问题呢?谢谢。 这是我的代码:
//typedef NSInteger (^ActionSheetPickerNumberOfRowsBlock)
(ActionSheetPicker *picker);
ActionSheetPickerNumberOfRowsBlock numberOfRows = ^(ActionSheetPicker *picker) {
return 29;
};

答案 0 :(得分:1)
29
默认类型为int
,因此编译器会根据需要推断块的返回类型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;
或在块文字中明确指定返回类型:
^NSInteger(ActionSheetPicker *picker) {
return 29;
};