无法为arm64编译ios自定义块

无法为arm64编译ios自定义块,ios,compilation,block,arm64,Ios,Compilation,Block,Arm64,当从armv7s更改为arm64时,我无法编译自定义块。我怎么会喜欢这个问题呢?谢谢 这是我的密码: //typedef NSInteger(^ActionSheetPickerNumber of RowsBlock) (ActionSheetPicker*picker); ActionSheetPickerNumber OfRowsBlock numberOfRows=^(ActionSheetPicker*picker){ 返回29; };29默认为typeint,因此编译器根据需要推断块

当从armv7s更改为arm64时,我无法编译自定义块。我怎么会喜欢这个问题呢?谢谢 这是我的密码:

//typedef NSInteger(^ActionSheetPickerNumber of RowsBlock)
(ActionSheetPicker*picker);
ActionSheetPickerNumber OfRowsBlock numberOfRows=^(ActionSheetPicker*picker){
返回29;

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

您可以从中看到:

  • int
    在armv7和arm64中都是32位的
  • NSInteger
    在armv7中为32位,在arm64中为64位
  • long
    在armv7中为32位,在arm64中为64位(与
    NSInteger
    相同)
因此,您可以:

return 29l;

或在块文本中显式指定返回类型:

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

错误:不兼容的块指针类型正在初始化…感谢您的回答。
^NSInteger(ActionSheetPicker *picker) {
    return 29;
};