无法为arm64编译ios自定义块
当从armv7s更改为arm64时,我无法编译自定义块。我怎么会喜欢这个问题呢?谢谢 这是我的密码:无法为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,因此编译器根据需要推断块
//typedef NSInteger(^ActionSheetPickerNumber of RowsBlock)
(ActionSheetPicker*picker);
ActionSheetPickerNumber OfRowsBlock numberOfRows=^(ActionSheetPicker*picker){
返回29;
};
29
默认为typeint
,因此编译器根据需要推断块的返回类型int
,而不是NSInteger
NSInteger
与armv7中的int
相同,但与arm64不同
您可以从中看到:
在armv7和arm64中都是32位的int
在armv7中为32位,在arm64中为64位NSInteger
在armv7中为32位,在arm64中为64位(与long
相同)NSInteger
return 29l;
或
或在块文本中显式指定返回类型:
^NSInteger(ActionSheetPicker *picker) {
return 29;
};
错误:不兼容的块指针类型正在初始化…感谢您的回答。
^NSInteger(ActionSheetPicker *picker) {
return 29;
};