Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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
Objective c 我需要为类创建自己的init吗?如果不是,在什么情况下需要编写自己的init?_Objective C_Initialization - Fatal编程技术网

Objective c 我需要为类创建自己的init吗?如果不是,在什么情况下需要编写自己的init?

Objective c 我需要为类创建自己的init吗?如果不是,在什么情况下需要编写自己的init?,objective-c,initialization,Objective C,Initialization,因此,如果我有一个类,我可能会错过编写显式init。但是在什么情况下有必要编写“自己的”init呢 当您需要为类初始化重要值时,您需要创建自己的init 在你“自己”的课堂上,它从来都不是必需的。这是一个设计问题 这可能会让您感兴趣: 当您需要对类的重要值进行日化时,您需要创建自己的init 在你“自己”的课堂上,它从来都不是必需的。这是一个设计问题 这可能会让您感兴趣: 当您需要对类的重要值进行日化时,您需要创建自己的init 在你“自己”的课堂上,它从来都不是必需的。这是一个设计问题 这可能

因此,如果我有一个类,我可能会错过编写显式init。但是在什么情况下有必要编写“自己的”init呢

当您需要为类初始化重要值时,您需要创建自己的init

在你“自己”的课堂上,它从来都不是必需的。这是一个设计问题

这可能会让您感兴趣:

当您需要对类的重要值进行日化时,您需要创建自己的init

在你“自己”的课堂上,它从来都不是必需的。这是一个设计问题

这可能会让您感兴趣:

当您需要对类的重要值进行日化时,您需要创建自己的init

在你“自己”的课堂上,它从来都不是必需的。这是一个设计问题

这可能会让您感兴趣:

当您需要对类的重要值进行日化时,您需要创建自己的init

在你“自己”的课堂上,它从来都不是必需的。这是一个设计问题

这可能会让您感兴趣:

创建您的初始方法不是强制性的,但它是将变量初始化为默认值的推荐方法。

创建您的初始方法不是强制性的,但它是将变量初始化为默认值的推荐方法。

创建您的初始方法不是强制性的,但这是将变量初始化为默认值的推荐方法。

创建您的init方法不是强制性的,但它是将变量初始化为默认值的推荐方法。

当您需要类在实例初始化后立即将实例变量配置为已知状态时

这个初始状态可能会受到调用方的影响,调用方可以使用
init
方法,比如
initWithSomething:
,有时也可以不使用

如果您有一个与实例变量的初始状态无关的类,那么您不需要编写自己的
init
方法


您可能还希望设置通知和其他与相关对象的绑定机制,这可能需要在
init
方法中完成,除非有一些入口点(即方法)这更合适。

当您需要该类在实例初始化后立即将实例变量配置为已知状态时

这个初始状态可能会受到调用方的影响,调用方可以使用
init
方法,比如
initWithSomething:
,有时也可以不使用

如果您有一个与实例变量的初始状态无关的类,那么您不需要编写自己的
init
方法


您可能还希望设置通知和其他与相关对象的绑定机制,这可能需要在
init
方法中完成,除非有一些入口点(即方法)这更合适。

当您需要该类在实例初始化后立即将实例变量配置为已知状态时

这个初始状态可能会受到调用方的影响,调用方可以使用
init
方法,比如
initWithSomething:
,有时也可以不使用

如果您有一个与实例变量的初始状态无关的类,那么您不需要编写自己的
init
方法


您可能还希望设置通知和其他与相关对象的绑定机制,这可能需要在
init
方法中完成,除非有一些入口点(即方法)这更合适。

当您需要该类在实例初始化后立即将实例变量配置为已知状态时

这个初始状态可能会受到调用方的影响,调用方可以使用
init
方法,比如
initWithSomething:
,有时也可以不使用

如果您有一个与实例变量的初始状态无关的类,那么您不需要编写自己的
init
方法


您可能还希望设置通知和其他与相关对象的绑定机制,这可能需要在
init
方法中完成,除非有更合适的入口点(即方法)。

建议您编写自己的init来初始化类的状态,因为最好明确说明实例变量的值,以避免错误的假设

例如:

@interface ClassA : NSObject {

    // no ivars

}

@end

@implementation ClassA

// no init as there is no state for you to initialize

- (void)methodA {

}

//...

@end

@interface ClassB : NSObject {

    // ivars here
    BOOL isDateSet;
    NSDate *date;

}

@end

@implementation ClassB

// init here because there are instance variables present in ClassB
- (id)init {
    if (self = [super init]) {
        isDateSet = NO;
        date = [NSDate distantPast];
    }
}

- (void)methodB {

}

//...

@end

建议您编写自己的init来初始化类的状态,因为最好明确说明实例变量的值,以避免错误的假设

例如:

@interface ClassA : NSObject {

    // no ivars

}

@end

@implementation ClassA

// no init as there is no state for you to initialize

- (void)methodA {

}

//...

@end

@interface ClassB : NSObject {

    // ivars here
    BOOL isDateSet;
    NSDate *date;

}

@end

@implementation ClassB

// init here because there are instance variables present in ClassB
- (id)init {
    if (self = [super init]) {
        isDateSet = NO;
        date = [NSDate distantPast];
    }
}

- (void)methodB {

}

//...

@end

建议您编写自己的init来初始化类的状态,因为最好明确说明实例变量的值,以避免错误的假设

例如:

@interface ClassA : NSObject {

    // no ivars

}

@end

@implementation ClassA

// no init as there is no state for you to initialize

- (void)methodA {

}

//...

@end

@interface ClassB : NSObject {

    // ivars here
    BOOL isDateSet;
    NSDate *date;

}

@end

@implementation ClassB

// init here because there are instance variables present in ClassB
- (id)init {
    if (self = [super init]) {
        isDateSet = NO;
        date = [NSDate distantPast];
    }
}

- (void)methodB {

}

//...

@end

建议您编写自己的init来初始化类的状态,因为最好明确说明实例变量的值,以避免错误的假设

例如:

@interface ClassA : NSObject {

    // no ivars

}

@end

@implementation ClassA

// no init as there is no state for you to initialize

- (void)methodA {

}

//...

@end

@interface ClassB : NSObject {

    // ivars here
    BOOL isDateSet;
    NSDate *date;

}

@end

@implementation ClassB

// init here because there are instance variables present in ClassB
- (id)init {
    if (self = [super init]) {
        isDateSet = NO;
        date = [NSDate distantPast];
    }
}

- (void)methodB {

}

//...

@end