In previous versions yes, but now is a little bit different situation. Before we had NSString = autoclass('NSString'), and after that line all methods, static and dynamic would be in NSString object, which is wrong, because we have some methods which are common to instances, and classes, so for now in NSString we have only static (class) methods, which is more objective-c-like...and because initWithUTF8String is instance method, we cant call it from NSString object, because she doesn't exist there, it will exist only in class instance like in native objective c -> [[NSString alloc] initWithUTF8String:"some string"], so we need first call alloc to allocate instance, and then we can access to instance method such as initWithUTF8String.

We can also use static method text = NSString.stringWithUTF8String_("some text"), and as you can see, she don't require to call alloc, like in native objective c -> [NSString stringWithUTF8String:"some text"];

With this object are more lightweight, and they contain only methods which they can call.