Module: Module

Defined in:
lib/konjure/define_method.rb

Instance Method Summary collapse

Instance Method Details

#define_method(name, &block) ⇒ Object

Overwrite the existing useless implementation

Raises:

  • (ArgumentError)


4
5
6
7
8
9
# File 'lib/konjure/define_method.rb', line 4

def define_method(name, &block)
  raise ArgumentError, 'Block required' if block.nil?

  signature = Konjure::objc_parameter_signature(block)
  objc_define_method(name, :object, signature, &block)
end

#objc_define_method(name, *types, &block) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/konjure/define_method.rb', line 11

def objc_define_method(name, *types, &block)
  return_type, *parameter_types = Konjure::encode_objc_types(types)
  return_type ||= '@'
  parameter_types.join('')

  signature = "#{return_type}@:#{parameter_types}"
  class_replaceMethod(self, name.to_sym, block, signature.UTF8String)

  block
end