class_replaceMethod(_:_:_:_:)
Replaces the implementation of a method for a given class.
Declaration
func class_replaceMethod(_ cls: AnyClass?, _ name: Selector, _ imp: IMP, _ types: UnsafePointer<CChar>?) -> IMP?Parameters
- cls:
The class you want to modify.
- name:
A selector that identifies the method whose implementation you want to replace.
- imp:
The new implementation for the method identified by
namefor the class identified bycls. - types:
An array of characters that describe the types of the arguments to the method. For possible values, see TP40008048 > TP40008048 CH100. Since the function must take at least two arguments—
selfand_cmd, the second and third characters must be “@:” (the first character is the return type).
Return Value
The previous implementation of the method identified by name for the class identified by cls.
Discussion
This function behaves in two different ways:
If the method identified by
namedoes not yet exist, it is added as if class_addMethod(_:_:_:_:) were called. The type encoding specified bytypesis used as given.If the method identified by
namedoes exist, its IMP is replaced as if method_setImplementation(_:_:) were called. The type encoding specified bytypesis ignored.
See Also
Working with Classes
class_getName(_:)class_getSuperclass(_:)class_setSuperclass(_:_:)class_isMetaClass(_:)class_getInstanceSize(_:)class_getInstanceVariable(_:_:)class_getClassVariable(_:_:)class_addIvar(_:_:_:_:_:)class_copyIvarList(_:_:)class_getIvarLayout(_:)class_setIvarLayout(_:_:)class_getWeakIvarLayout(_:)class_setWeakIvarLayout(_:_:)class_getProperty(_:_:)class_copyPropertyList(_:_:)