2012-01-09 4 views
1

何度もObj-Cコードを読んで、Obj-Cヘッダーファイルのいずれかにある定数に値が必要です。MonoTouch - Obj-C定数へのアクセス

通知のために、私はUIApplication.DidEnterBackgroundNotificationのようなMonoTouchでそれらを見つけることができました。

このような値を取得する標準的な方法はありますか?私は奇妙な理由でUINavigationControllerHideShowBarDurationを検索する必要があります。

答えて

2

UINavigationControllerHideShowBarDurationCGFloatで、MonoTouchは.NET System.Single(C#のfloat)にマップします。

あなたは、実行時に(それはバージョン間で変更される可能性とC#constのように埋め込まれたべきではありません)一定の値を取得するためにMonoTouch.ObjCRuntime.Dlfcn.GetFloatメソッドを使用することができるはずです。例えば。

IntPtr handle = Dlfcn.dlopen (Constants.UIKitLibrary, 0); 
return Dlfcn.GetFloat (handle, "UINavigationControllerHideShowBarDuration"); 
+0

私はそれを試してみます。 'handle'はtry-finallyブロック内で閉じられる必要がありますか? – jonathanpeppers

+0

(a)ライブラリがすでにメモリにロードされているため、この場合は閉じても問題にはなりません。 (b) 'MonoTouch.Constants'は公開されています - 実行時にMonoTouchのバージョンを知ることはとても便利です:-) – poupou

関連する問題