Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 返回类自身内的类实例_Iphone_Objective C - Fatal编程技术网

Iphone 返回类自身内的类实例

Iphone 返回类自身内的类实例,iphone,objective-c,Iphone,Objective C,我正在尝试编写一个UIToolbar子类,但遇到了一些问题。这是我第一次真正尝试将任何事情细分,所以如果是愚蠢的事情,请原谅我。我不知道如何从类自身返回类的实例。 乙二醇 键盘工具栏*工具栏; @属性(非原子,保留)键盘工具栏*工具栏; toolbar=[[keyboardToolBar alloc]initWithFrame:CGRectMake(0,0,self.view.bounds.size.width,50) -(键盘工具栏*)initWithFrame:(CGRect)frame{

我正在尝试编写一个UIToolbar子类,但遇到了一些问题。这是我第一次真正尝试将任何事情细分,所以如果是愚蠢的事情,请原谅我。我不知道如何从类自身返回类的实例。 乙二醇

键盘工具栏*工具栏;
@属性(非原子,保留)键盘工具栏*工具栏;
toolbar=[[keyboardToolBar alloc]initWithFrame:CGRectMake(0,0,self.view.bounds.size.width,50)
-(键盘工具栏*)initWithFrame:(CGRect)frame{

keyboardToolBar*keyboard=[[keyboardToolBar alloc]initWithFrame:frame];您是否检查了此处的示例项目:

此处有许多不清楚的地方。您是否正在尝试创建方便的方法?在这种情况下,您应该调用它
keyboardToolBar WithFrame:
,并像这样实现它

+ (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;
}

谢谢,第二个选项是我想要的,我忘了调用
self=[super init];
- (id)initWithFrame:(CGRect)frame {
    self = [super init];
    if ( self ) {
        // Do your class initializations here.
    }

    return self;
}