Function

class_replaceMethod(_:_:_:_:)

Replaces the implementation of a method for a given class.

Declaration

func class_replaceMethod(_ cls: AnyClass?, _ name: Selector, _ imp: IMP, _ types: UnsafePointer<Int8>?) -> 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 name for the class identified by cls.

types

An array of characters that describe the types of the arguments to the method. For possible values, see Objective-C Runtime Programming Guide > Type Encodings. Since the function must take at least two arguments—self and _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 name does not yet exist, it is added as if class_addMethod(_:_:_:_:) were called. The type encoding specified by types is used as given.

  • If the method identified by name does exist, its IMP is replaced as if method_setImplementation(_:_:) were called. The type encoding specified by types is ignored.

See Also

Working with Classes

func class_getName(AnyClass?)

Returns the name of a class.

func class_getSuperclass(AnyClass?)

Returns the superclass of a class.

func class_setSuperclass(AnyClass, AnyClass)

Sets the superclass of a given class.

Deprecated
func class_isMetaClass(AnyClass?)

Returns a Boolean value that indicates whether a class object is a metaclass.

func class_getInstanceSize(AnyClass?)

Returns the size of instances of a class.

func class_getInstanceVariable(AnyClass?, UnsafePointer<Int8>)

Returns the Ivar for a specified instance variable of a given class.

func class_getClassVariable(AnyClass?, UnsafePointer<Int8>)

Returns the Ivar for a specified class variable of a given class.

func class_copyIvarList(AnyClass?, UnsafeMutablePointer<UInt32>?)

Describes the instance variables declared by a class.

func class_getIvarLayout(AnyClass?)

Returns a description of the Ivar layout for a given class.

func class_setIvarLayout(AnyClass?, UnsafePointer<UInt8>?)

Sets the Ivar layout for a given class.

func class_getWeakIvarLayout(AnyClass?)

Returns a description of the layout of weak Ivars for a given class.

func class_setWeakIvarLayout(AnyClass?, UnsafePointer<UInt8>?)

Sets the layout for weak Ivars for a given class.

func class_getProperty(AnyClass?, UnsafePointer<Int8>)

Returns a property with a given name of a given class.

func class_addMethod(AnyClass?, Selector, IMP, UnsafePointer<Int8>?)

Adds a new method to a class with a given name and implementation.

func class_getInstanceMethod(AnyClass?, Selector)

Returns a specified instance method for a given class.

func class_getClassMethod(AnyClass?, Selector)

Returns a pointer to the data structure describing a given class method for a given class.

func class_copyMethodList(AnyClass?, UnsafeMutablePointer<UInt32>?)

Describes the instance methods implemented by a class.

func class_getMethodImplementation(AnyClass?, Selector)

Returns the function pointer that would be called if a particular message were sent to an instance of a class.

func class_getMethodImplementation_stret(AnyClass?, Selector)

Returns the function pointer that would be called if a particular message were sent to an instance of a class.

func class_respondsToSelector(AnyClass?, Selector)

Returns a Boolean value that indicates whether instances of a class respond to a particular selector.

func class_conformsToProtocol(AnyClass?, Protocol?)

Returns a Boolean value that indicates whether a class conforms to a given protocol.

func class_getVersion(AnyClass?)

Returns the version number of a class definition.

func class_setVersion(AnyClass?, Int32)

Sets the version number of a class definition.