1

我正在阅读的书说,在分配对象后,我需要在实例上调用 init 函数。但是,当我不调用 init 方法时,我没有看到类的功能有任何差异。那么 init 函数到底在做什么呢?下面是简单类的接口:

@interface Fraction: NSObject
{
   int numerator;

   int denominator;
}
-(void) print;

-(void) setNumerator: (int) num;

-(void) setDenominator:(int) den ;

@end
4

2 回答 2

1

分配一个对象我需要在实例上调用init函数

可以视为

分配一个对象我应该在实例上调用init函数

Init 一般用于初始化类中的实例变量。

在 NSObject 类的 init 方法中,没有进行初始化,它只是返回 self 。

于 2012-06-13T11:49:41.150 回答
1

init旨在初始化所有必要的实例变量,以便对象处于定义的状态。之后alloc,所有 ivars 都设置为0// nilNULL这可能不是您的对象允许的状态(例如,denominator不应该是0)。

init你的类继承的方法NSObject什么都不做,所以如果你的类不需要初始化任何 ivars,你就不必实现你自己的。但是总是init在 之后调用是一个很好的习惯alloc,即使您知道该方法什么都不做(谁说这将永远保持正确?)。

于 2012-06-13T11:46:45.200 回答