Next Page > Hide TOC

NSProxy Class Reference

Inherits from
none (NSProxy is a root class)
Conforms to
Framework
/System/Library/Frameworks/Foundation.framework
Availability
Available in Mac OS X v10.0 and later.
Companion guide
Declared in
NSProxy.h

Overview

NSProxy is an abstract superclass defining an API for objects that act as stand-ins for other objects or for objects that don’t exist yet. Typically, a message to a proxy is forwarded to the real object or causes the proxy to load (or transform itself into) the real object. Subclasses of NSProxy can be used to implement transparent distributed messaging (for example, NSDistantObject) or for lazy instantiation of objects that are expensive to create.

NSProxy implements the basic methods required of a root class, including those defined in the NSObject protocol. However, as an abstract class it doesn’t provide an initialization method, and it raises an exception upon receiving any message it doesn’t respond to. A concrete subclass must therefore provide an initialization or creation method and override the forwardInvocation: and methodSignatureForSelector: methods to handle messages that it doesn’t implement itself. A subclass’s implementation of forwardInvocation: should do whatever is needed to process the invocation, such as forwarding the invocation over the network or loading the real object and passing it the invocation. methodSignatureForSelector: is required to provide argument type information for a given message; a subclass’s implementation should be able to determine the argument types for the messages it needs to forward and should construct an NSMethodSignature object accordingly. See the NSDistantObject, NSInvocation, and NSMethodSignature class specifications for more information.

Adopted Protocols

NSObject

Tasks

Creating Instances

Deallocating Instances

Finalizing an Object

Handling Unimplemented Methods

Introspecting a Proxy Class

Describing a Proxy Class or Object

Class Methods

alloc

Returns a new instance of the receiving class

+ (id)alloc

Availability
Declared In
NSProxy.h

allocWithZone:

Returns a new instance of the receiving class

+ (id)allocWithZone:(NSZone *)zone

Return Value

A new instance of the receiving class, as described in the NSObject class specification under the allocWithZone: class method.

Availability
Declared In
NSProxy.h

class

Returns self (the class object).

+ (Class)class

Return Value

self. Because this is a class method, it returns the class object

Availability
See Also
Declared In
NSProxy.h

respondsToSelector:

Returns a Boolean value that indicates whether the receiving class responds to a given selector.

+ (BOOL)respondsToSelector:(SEL)aSelector

Parameters
aSelector

A selector.

Return Value

YES if the receiving class responds to aSelector messages, otherwise NO.

Availability
Declared In
NSProxy.h

Instance Methods

dealloc

Deallocates the memory occupied by the receiver.

- (void)dealloc

Discussion

This method behaves as described in the NSObject class specification under the dealloc instance method.

Availability
See Also
Declared In
NSProxy.h

description

Returns an NSString object containing the real class name and the id of the receiver as a hexadecimal number.

- (NSString *)description

Return Value

An NSString object containing the real class name and the id of the receiver as a hexadecimal number.

Availability
Declared In
NSProxy.h

finalize

The garbage collector invokes this method on the receiver before disposing of the memory it uses.

- (void)finalize

Discussion

This method behaves as described in the NSObject class specification under the finalize instance method. Note that a finalize method must be thread-safe.

Availability
See Also
Declared In
NSProxy.h

forwardInvocation:

Passes a given invocation to the real object the proxy represents.

- (void)forwardInvocation:(NSInvocation *)anInvocation

Parameters
anInvocation

The invocation to forward.

Discussion

NSProxy’s implementation merely raises NSInvalidArgumentException. Override this method in your subclass to handle anInvocation appropriately, at the very least by setting its return value.

For example, if your proxy merely forwards messages to an instance variable named realObject, it can implement forwardInvocation: like this:

– (void)forwardInvocation:(NSInvocation *)anInvocation
{
    [anInvocation setTarget:realObject];
    [anInvocation invoke];
    return;
}
Availability
Declared In
NSProxy.h

methodSignatureForSelector:

Raises NSInvalidArgumentException. Override this method in your concrete subclass to return a proper NSMethodSignature object for the given selector and the class your proxy objects stand in for.

- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector

Parameters
aSelector

The selector for which to return a method signature.

Return Value

Not applicable. The implementation provided by NSProxy raises an exception.

Discussion

Be sure to avoid an infinite loop when necessary by checking that aSelector isn’t the selector for this method itself and by not sending any message that might invoke this method.

For example, if your proxy merely forwards messages to an instance variable named realObject, it can implement methodSignatureForSelector: like this:

– (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
{
    return [realObject methodSignatureForSelector:aSelector];
}
Availability
See Also
Declared In
NSProxy.h

Next Page > Hide TOC


© 2007 Apple Inc. All Rights Reserved. (Last updated: 2007-04-06)


Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.