[[NSObject class] retainCount]
returns NSUIntegerMax
, so, yes, classes are implemented as singletons and probably override release
as a no-op.
Addendum:
In the objc runtime implementation of NSObject
at line 1659 you find ...
+ (id)retain {
return (id)self;
}
... which verifies that [NSObject retain]
does nothing.