Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Xojo
Xojo の Cocoa アプリ開発。ちょっと込み入ったことをすると Declare を連発する訳ですが、その際にコントロールの View の階層構造が欲しくなることがあります。その方法は以下の通り。
Soft Declare Function subtreeDescription Lib "Cocoa" Selector "_subtreeDescription" (id As Integer) As CFStringRef
MsgBox(subtreeDescription(Me.Handle))
非公開 API なので、Mac App Store アプリにこのコードを残さないようにしましょう :)

あと、Xojo API のメソッドなどもちょっと調べてみたのでメモとして書いておきます。
Soft Declare Function NSClassFromString lib "Cocoa" (aClassName as CFStringRef) as Ptr
Soft Declare Function class_copyMethodList Lib "Cocoa" (cls As Ptr, ByRef outCount As UInt64) As Ptr
Soft Declare Function method_getName Lib "Cocoa" (method As Ptr) As Ptr
Soft Declare Function sel_getName Lib "Cocoa" (sel As Ptr) As CString

Dim count As UInt64 = 0
Dim methods As Ptr

methods = class_copyMethodList(NSClassFromString("XOJListboxView"), count)

Dim mb As MemoryBlock = methods
For i As Integer = 0 To count - 1
MsgBox(sel_getName(method_getName(mb.Ptr(i * 4)))) // 32-bit
Next
まぁ、Runtime で頑張らずとも CocoaFramework.dylib を読めば OK という話でもあります。
$ otool -oV "/Applications/Xojo 2013 Release 2/Xojo.app/Contents/Resources/Frameworks/CocoaFramework.dylib"

Comments

Leave Yours...
Name:
E-mail / URL (optional):
Comment:
Are You Robot?: