RubyCocoa - How To Call Objective-C Methods From Ruby

How To Call Objective-C Methods From Ruby

To invoke an Objective-C method, you replace each colon in the method name except the last with an underscore. Thus, for example, the NSWindow instance method initWithContentRect:styleMask:backing:defer: becomes initWithContentRect_styleMask_backing_defer.

All Cocoa classes and functions belong to OSX module, so for example, the Objective-C code:

initWithContentRect:frame styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO]

will become:

OSX::NSWindow.alloc.initWithContentRect_styleMask_backing_defer(frame, OSX::NSTitledWindowMask, OSX::NSBackingStoreBuffered, false)

As you can see, this decreases the code readability by rendering Objective-C parameter naming useless. So, there is another convenient way to write the method calls — the objc_send method, which accepts Ruby symbols as parameter names. For example, the previous code can also be written as:

OSX::NSWindow.alloc.objc_send(:initWithContentRect, frame, :styleMask, OSX::NSTitledWindowMask, :backing, OSX::NSBackingStoreBuffered, :defer, false)

Read more about this topic:  RubyCocoa

Famous quotes containing the words call, methods and/or ruby:

    “If but some vengeful god would call to me
    From up the sky, and laugh: “Thou suffering thing,
    Know that thy sorrow is my ecstasy,
    That thy love’s loss is my hate’s profiting!””
    —Thomas Hardy (1840–1928)

    “In inner-party politics, these methods lead, as we shall yet see, to this: the party organization substitutes itself for the party, the central committee substitutes itself for the organization, and, finally, a “dictator” substitutes himself for the central committee.”
    —Leon Trotsky (1879–1940)

    “It is better to be looked over than overlooked.”
    —Mae West, U.S. actor, screenwriter, and Leo McCarey. Ruby Carter (Mae West)