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<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 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 クラスを扱う