Direct versus indirect swizzling
This is an issue only when it is possible for a swizzled pointer to refer to an object
that is no longer in virtual memory. With direct swizzling, the virtual memory pointer of
the referenced object is placed directly in the swizzled pointer; with indirect swizzling, the
virtual memory pointer is placed in an intermediate object, which acts as a placeholder for
the actual object. Thus, with the indirect scheme objects can be uncached without requiring the swizzled pointers that reference the object to be unswizzled also.
These techniques can be combined to give eight possibilities (for example, in-place/
eager/direct, in-place/lazy/direct, or copy/ lazy/indirect).