0

他のプロジェクト コードを読んでいます。32 ビットでは正常にコンパイルできますが、プロジェクトを 64 ビットに切り替えると、タイトルにあるように 1 つのエラー メッセージが表示されます。

コード:

[obj setAction:(SEL)@selector(start:)];

の戻り値の型と のパラメータが args を必要とすることはわかって@selectorSELますsetActionSEL、なぜ 64 ビットで失敗したのでしょうか? SEL実際はどんなタイプ?

ありがとう!

4

1 に答える 1

3

失敗することはありませんが、キャストはまったく必要ありません。@selector()式はすでにタイプSELです。書くだけ

[obj setAction:@selector(start:)];

SELタイプは、Cに関してはstruct objc_selector *です。しかし、OS XとiOSではそうですか?プレーンに支えられてconst char *おり、ロード時にリンカーとカーネルによって統合されます。

于 2012-12-17T07:52:49.740 に答える