Objective-C学习- 便利初始化函数和便利构造器

来源:互联网 发布:最新数据恢复软件 编辑:程序博客网 时间:2024/05/13 16:40

之前在 博客园 用 为你前行 的昵称曾经写过一篇关于  便利化初始化函数  和   便利构造器  的博客,博客搬家没有搬过来,所以就在这里从重新写一下,最新的便利初始化函数和便利构造器的想法。

有过面向对象的基础的话,可以当成构造函数来学习,但是又有些区别。

 依旧用Student类来说明:

 以下是Student.h的头文件

////  Student.h//  OC_initTest////  Created by Mac on 15/7/31.//  Copyright (c) 2015年 yue. All rights reserved.//#import <Foundation/Foundation.h>@interface Student : NSObject//定义属性@property NSString *studentName; //学生姓名@property int age; //学生年龄//含姓名参数和年龄参数的构造函数(便利构造初始化函数)-(instancetype) initWithName:(NSString *)name andWithAge:(int)age;//便利构造器(是类方法)+(instancetype) studentWithName:(NSString *)name andWithAge:(int)age;//便利构造器一般命名的开头是类名@end

然后就是Student.m的实现文件

////  Student.m//  OC_initTest////  Created by Mac on 15/7/31.//  Copyright (c) 2015年 yue. All rights reserved.//#import "Student.h"@implementation Student//含姓名参数和年龄参数的构造函数(便利构造初始化函数)-(instancetype) initWithName:(NSString *)name andWithAge:(int)age{       if (self =  [super init])    {        [self setStudentName:name];        [self setAge:age];   }    return self;}//便利构造器(是类方法)+(instancetype) studentWithName:(NSString *)name andWithAge:(int)age{    __autoreleasing Student *student = [[Student alloc] initWithName:name andWithAge:age];        return student;}@end

接下来是main.m文件

////  main.m//  OC_initTest////  Created by Mac on 15/7/31.//  Copyright (c) 2015年 yue. All rights reserved.//#import <Foundation/Foundation.h>#import "Student.h"int main(int argc, const char * argv[]) {    //之前的定义方法    Student *student = [[Student alloc]initWithName:@"小明" andWithAge:19];            //用便利构造器    /*     可以看出用便利构造器定义的对象的代码量少了     以前便利构造器的地位很重要,但现在也不是那么重要了     以前用便利构造器方便是因为是手动控制内存的释放,但现在是自动释放     因此便利构造器的地位不是那么的重要了,只需要知道用法即可    */    Student *student1 = [Student studentWithName:@"小明" andWithAge:19];        return 0;}


0 0
原创粉丝点击