pub unsafe trait NSCopying: Message {
    type Ownership: Ownership;
    type Output: Message;

    fn copy(&self) -> Id<Self::Output, Self::Ownership> { ... }
}

Required Associated Types

Indicates whether the type is mutable or immutable.

This can be Owned if and only if copy creates a new instance, see the following example:

let x: Id<MyObject, _> = MyObject::new();
// This is valid only if `y` is a new instance. Otherwise `x` and `y`
// would be able to create aliasing mutable references!
let y: Id<MyObject, Owned> = x.copy();

Note that for the same reason, you should be careful when defining new methods on your object; e.g. immutable types like NSString don’t return Id<NSString, Owned>, because that would allow this trait to create an aliasing Id<NSString, Shared> (since sending the copy message (and others) does not create a new instance, but instead just retains the instance).

The output type.

This is usually Self, but e.g. NSMutableString returns NSString. TODO: Verify???

Provided Methods

Implementors