2

我在 .mm 文件中有以下代码:

[UIView animateWithDuration:0.3 animations:^{
    self.titleLabel.alpha = 0.0;
} completion:^(BOOL finished) {    //<<compiler complains here
    self.titleLabel.alpha = 1.0;
}];

但我得到编译器错误:

无法使用“void (^)(int)”类型的右值初始化“void (^)(BOOL)”类型的参数

在上面提到的那条线上。该代码在普通的 .m 文件中很好。我做错了什么,还是编译器有问题?

更新:标题导入是:

#import <UIKit/UIKit.h>

和 .mm 进口(审查):

#import "XXSelectViewController.h"
#import "XXViewController.h"
#import "AboutViewController.h"
#import "HighScoresViewController.h"
#import "GameModel.h"

更新2:另外,我在这一行收到警告:

- (void)viewDidDisappear:(BOOL)animated

警告:

'viewDidDisappear:' 实现中的参数类型冲突:'BOOL' (aka 'signed char') vs 'int'

我们在这个项目中使用了 PowerVR 工具,在 PVRShell.h 和 PVRTResourceFile.h 中有以下几行:

typedef bool (*PFNReleaseFileFunc)(void* handle);

typedef bool (*PFNReleaseFileFunc)(void* handle);

我不知道这是否与这些问题有关...

4

1 回答 1

2

事实证明,错误的原因是因为这条线,深埋在 PVR 工具中:

#define BOOL int

所以有一个宏遍历所有代码,替换BOOLint. 不理想!我认为它导致问题的原因是因为这些工具是作为文件夹添加的,而不是作为嵌入式 .xcodeproj ......所以我们可能需要重新导入它。学过的知识!

奇怪的是,如果我注释掉那一行,代码仍然有效;)但谁知道能坚持多久!

于 2012-08-10T10:26:12.617 回答