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

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

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

 依旧用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值