黑马程序员---Object-C和Swift对象初始化

NSString *emptyString =[[NSString alloc ] init];//返回一个空字符串

Object-C初始化方法
分配对象
分配是伊恩新对象诞生的过程。此操作是从OS获得一块内存将其指定为存放对象的实例变量的位置。alloc方法孙便还将这块内存区域全部初始化为0;所有的BOOL类型初始化为NO;所有的int类型变量被初始化为0;所有的float类型变量被初始化微0.0;所有指针被初始化为nil.

初始化对象
与分配相对应的操作是 初始化。初始化(initialization) 从操作系统取得一块内存,准备用于存储对象。init方法返回他们正在初始化的对象。如:
Car *car=[[Car alloc ] init];


便利初始化函数
许多类包含便利初始化函数,用来完成某些额外的工作的初始化方法,无需自己来完成这些麻烦的工作。如:

-(id )init;//初始化一个空字符串

NSString *emptyString=[[NSString  alloc] init];//返回一个空字符串

-(id) initWithFormat:(NSString *)format,…… //stringWithFormat:接受格式化的字符串并输出格式化的结果一样,次本本初始化一个新的字符串作为格式化操作的结果。

string = [[NSString alloc]

             initWithFormat:@"%d or %d",25,624];//返回一个字符串






子类化问题
初始化函数规则
  • 不需要自己创建初始化函数,如果不需要设置任何状态,或者只需要alloc 方法将内存清零的默认行为,则不需要担心init.
  • 如果够早了一个初始化函数,则一定要在你自己的制定初始化函数中调用超类的指定初始函数。
  • 如果初始化不止一个,则要选择一个作为指定初始化函数。被选定的方法应该调用超类的指定初始化函数。要按照指定初始化函数的形式实现其他初始化函数。
Swift初始化方法
Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化,Swift 的类并不会默认继承其父类的初始化器。但是也有例外。
初始化规则:

规则一:如果你的子类没有定义任何指定初始化器,则其会自动继承其父类的所有指定初始化器

规则二:如果你的子类实现了其父类的所有指定初始化器,不管是自定义的实现还是因为规则一造成的实现,该子类自动继承其父类所有的便利初始化器。

示例如下:

//Objective-C
UILabel *label = [UILabel alloc] init];
UITableView *myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];

//Swift
let label: UILabel = UILabel()
let myTableView: UITableView = UITableView(frame: CGRectZero, style: .Grouped)





你可能感兴趣的:(IOS开发)