2

.mmファイルに次のコードがあります。

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

しかし、コンパイラエラーが発生します:

タイプ'void(^)(BOOL)'のパラメーターをタイプ'void(^)(int)'の右辺値で初期化できません

上記の行に。コードは通常の.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'(別名'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

したがって、すべてのコードを通過するマクロがあり、。に置き換えBOOLられintます。理想的ではありません!それが問題を引き起こしている理由は、ツールが埋め込まれた.xcodeprojとしてではなく、フォルダーとして追加されたためだと思います...したがって、再インポートが必要になる場合があります。学んだ教訓!

奇妙なことに、私がその行をコメントアウトしても、コードはまだ機能します;)しかし、誰がどれくらいの期間知っているのですか?

于 2012-08-10T10:26:12.617 に答える