I am confused with the "otherwise" and "as long as" usage in the following phrase;
Otherwise ARC does not enforce the Objective-C type system as long as the implementing methods follow the signature of the static type. It is undefined behavior if ARC is exposed to an invalid pointer.
For ARC's purposes, a valid object is one with «well-behaved» retaining operations. Specifically, the object must be laid out such that the Objective-C message send machinery can successfully send it the following messages:
- retain, taking no arguments and returning a pointer to the object.
- release, taking no arguments and returning void.
- autorelease, taking no arguments and returning a pointer to the object.
http://clang.llvm.org/docs/AutomaticReferenceCounting.html
Could we deduce the following;
...(forget the otherwise case)...ARC will enforce Objective-C type system if the implementing methods follow the signature of the static type.
Is it talking about the signatures of retain,release,autorelease methods? If so, does it have the negative meaning;
ARC will _not_ enforce Objective-C type system if the implementing methods follow the signature of the static type.