а)
-(UIView *)someMethod {
return [[[UILabel alloc] initWithFrame:CGRectMake(0,0,100,100)] autorelease];
}
b) вы неправильно понимаете разницу между методом класса и методом экземпляра.
метод класса объявлен и используется следующим образом:
// declaration: notated with +
+ (NSDocumentController *)sharedDocumentController;
// usage
NSDocumentController * thang = [NSDocumentController sharedDocumentController];
метод экземпляра объявлен и используется следующим образом:
// declaration: notated with -
- (id)init;
// usage:
// + alloc is a class method
// this requests the class (NSObject) to allocate and return a newly allocated NSObject
// - init is the instance method
// this sends a message to the NSObject instance (returned by [NSObject alloc])
NSObject * thang = [[NSObject alloc] init];
в вашем примере alloc
возвращает выделенный экземпляр, для которого вы должны затем вызвать соответствующий метод экземпляра init.
некоторые классы предоставляют удобные конструкторы, которые часто возвращают автоматически выпущенный экземпляр:
+ (NSNumber *)numberWithInt:(int)anInt;
но дублирование кода таким способом не очень распространено, если только вы не работаете с такими сложными темами, как кластеры классов. Конечно, было бы неплохо добавить это в интерфейс, если вы обнаружите, что вам регулярно нужны определенные функции или конструктор удобства.