我正在尝试编写UIToolbar子类并遇到问题。这是我第一次真正尝试对任何东西进行分类,所以请原谅我,如果它是愚蠢的东西。我无法弄清楚如何从自己的内部返回类的实例。 例如
keyboardToolBar *toolbar;
@property (nonatomic, retain) keyboardToolBar *toolbar;
toolbar = [[keyboardToolBar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 50)
-(keyboardToolBar*)initWithFrame:(CGRect)frame{
keyboardToolBar *keyboard = [[keyboardToolBar alloc] initWithFrame:frame];<--how can i do this
//do stuff with keyboard
return keyboard;
}
我认为上面的内容将停留在调用init的无限循环中,调用init等等,那么如何从自己的init方法中返回一个类的实例,或者有更好的方法来实现这一点。
感谢
DARC
答案 0 :(得分:1)
这里有很多不清楚的事情。你想创造便利方法吗?在这种情况下,您应该将其称为keyboardToolbarWithFrame:
并像
+ (id)keyboardToolbarWithFrame:(CGRect)frame {
return [[[self alloc] initWithFrame:frame] autorelease];
}
注意+
符号表示它是一种类方法。这将为您提供一个自动释放的课程实例。
现在,如果您只是尝试将其超类分类为必要的初始化,则可以删除该方法。它将调用超类'initWithFrame:
方法。但通常你自己的实现将是这样的,
- (id)initWithFrame:(CGRect)frame {
self = [super init];
if ( self ) {
// Do your class initializations here.
}
return self;
}
答案 1 :(得分:0)