NodObjC
The NodeJS ⇆ Objective-C Bridge
Method
Represents an Objective-C "Method" instance. These do not respond to regular
messages, so it does not inherit from id
.
wrap()
NodObjC
. You should not need to use this function in
your code.Returns a new Method
instance wrapping the given pointer
.
function wrap (pointer) {
if (pointer.isNull()) {
return null
}
return new Method(pointer)
}
Method()
NodObjC
. You should not need to use this function in
your code.Method
wrapper class constructor.
function Method (pointer) {
this.pointer = pointer
}
Method#getArgumentType()
Returns the "argument type" string, for the given argument index
.
proto.getArgumentType = function getArgumentType (index) {
var ptr = core.method_copyArgumentType(this.pointer, index)
, str = core.getStringAndFree(ptr)
return str
}
Method#getArgumentTypes()
Returns an Array of all "argument types" for this method.
proto.getArgumentTypes = function getArgumentTypes () {
var rtn = []
, len = this.getNumberOfArguments()
for (var i=0; i<len; i++) {
rtn.push(this.getArgumentType(i))
}
return rtn
}
Method#getReturnType()
Returns the "type encoding" of the method's return value.
proto.getReturnType = function getReturnType () {
var ptr = core.method_copyReturnType(this.pointer)
, str = core.getStringAndFree(ptr)
return str
}
Method#getTypes()
Returns an Array of "type encodings". The array has a length
of 2
. The
first element is the method return type. The second element is an Array of all
the method's argument types.
proto.getTypes = function getTypes () {
return [ this.getReturnType(), this.getArgumentTypes() ]
}
Method#exchangeImplementations()
Exchanges the method's implementation function with another Method
instance.
This is the preferred way to "swizzle" methods in Objective-C.
proto.exchangeImplementations = function exchangeImplementations (other) {
return core.method_exchangeImplementations(this.pointer, other.pointer)
}
Method#getImplementation()
Returns the function implementation of this Method
. Also known as the IMP
of the method. The returned object is a regular JavaScript Function which may
be invoked directly, when given valid "self" and "_sel" arguments.
proto.getImplementation = function getImplementation () {
return IMP.createUnwrapperFunction(core.method_getImplementation(this.pointer), this.getTypes())
}
Method#getName()
Returns the name of this Method
.
proto.getName = function getName () {
return SEL.toString(core.method_getName(this.pointer))
}
Method#getNumberOfArguments()
Returns the number of defined arguments this Method
accepts.
proto.getNumberOfArguments = function getNumberOfArguments () {
return core.method_getNumberOfArguments(this.pointer)
}
Method#getTypeEncoding()
Returns the overall "type encoding" of this Method
. This is a
compacted/stringified version of getTypes()
, so usually you will use that
over this function.
proto.getTypeEncoding = function getTypeEncoding () {
return core.method_getTypeEncoding(this.pointer)
}
Method#setImplementation()
Set's this Method
's implementation function. The IMP
function may be
a regular JavaScript function or another function IMP retreived from a previous
call to Method#getImplementation()
.
proto.setImplementation = function setImplementation (func) {
var types = this.getTypes()
, wrapperPtr = IMP.createWrapperPointer(func, types)
, oldFuncPointer = core.method_setImplementation(this.pointer, wrapperPtr)
return IMP.createUnwrapperFunction(oldFuncPointer, types)
}