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