2010-12-28 7 views
3

iPhoneアプリケーションを作成しようとしていますが、問題があります。
私はクラス内のアプリデリゲートとして定数としてアプリケーションデリゲートを定義しますか?

#define ikub (iKubMobileAppDelegate *)[[UIApplication sharedApplication] delegate] 

を定数を宣言していると私は、アプリケーション

[ikub.subscriptions count] 

ためのインスタンス変数である配列のサイズを取得する必要があるときに私が取得エラー不明な「購読」ゲッターメソッドへのアクセス
なぜこれが起こっているのか分かりません。

助けてください!!!!

+1

あなたは 'iKubMobileAppDelegateを輸入していることを確認します.h'ファイルをあなたのアプリケーションデリゲートを使用しているファイルに追加します。また、あなたのアプリケーションデリゲートに 'subscriptions'プロパティがあることを確認してください。また、Cプリプロセッサマクロは、慣例として 'ALL_CAPS'という名前になる傾向があります。 – BoltClock

+0

上記のすべてをチェックしても問題ありません。また、1000%確実になるようにすべての大文字に定数を変更しましたが、同じエラーが発生します。 : – Olsi

答えて

21

あなたが(それ以外の場合は、マクロ内のキャストは、その時点では不明であるプロパティに適用されます。)括弧でマクロ値をラップする必要がありそう:

#define ikub ((iKubMobileAppDelegate *)[[UIApplication sharedApplication] delegate]) 
+0

それは働いた!!!!ありがとうJonathan !!!! – Olsi

+0

私は、マクロの代わりにインライン関数を勧めます。あなたはブレークポイントを適切に設定することができ、上記のようなマクロ特有のトリッキーを避けることができます。 –

+1

純粋なC/Objective-Cの '()'は '(void)'とは異なるものを意味します。この場合、 ''静的なインラインiKubMobileAppDelegate * ikub(void) '。:) –

関連する問題