OC03_便利构造器.属性

#import <Foundation/Foundation.h>


@interface Student : NSObject


//新建一个类Student

//设置器,访问器,成员变量以后可以用属性代替

//属性的关键词是:property

//:

@property NSString *name;

@property NSInteger age;

@property CGFloat score;

-(void)eat;

//属性的作用

/*

 1.它定义了一个成员变量,成员变量命名是 _+属性名

 2.属性生命力饿settergetter方法;

 3.实现了settergetter方法;

 

 属性的属性:

 1.具有读写性:就是对设置器和访问器进行控制,默认是可读可写,readwrite

 readonly:只读,被它修饰的属性只有getter方法,没有setter方法;

 */

//:

@property(setter= guodegang:)NSString *str;

@property(readonly,getter=是我哈)NSString *str1;

//getter=method相当于给getter方法重新起一个名;

//当设置setter的时候,别忘了新的名字后面加上一个:(冒号);

//2.原子性设置

//nonatomic,atomic,默认是atomic,可以保证在多线程情况下,访问数据,安全性,但是我们一般只是普通的赋值,打开线程锁反而浪费资源,所以一般我们填nonatomic

@property(nonatomic)NSString *hobby;


//3.语义设置

/*

 1.assign:一般基本数据类型使用assign,比如NSInteger,CGFloat,这部分内容不需要管理内存;

 2.retain:一般的对象类型,比如我们自己定义的类,系统提供的想数组等对象,都需要通过retain进行修饰;

 3.copy:目前,只有NSString使用copy;

 */

//@property(nonatomic,copy)NSString *color;

//@property(nonatomic,copy)NSString *stu ;//自定义的用retain;

//@property(nonatomic,retain)NSArray *arr;

//@property(nonatomic,assign)NSInteger a;


@property (nonatomic, copy)NSString *clor;

@property (nonatomic,copy)NSString *brand;

@property (nonatomic,assign)CGFloat price;

@property (nonatomic,assign)NSInteger speed;




//简单来说就是字符串用copy,自定义用retain,基本数据类型(NSInteger,CGFloat)assign;


/*

 1.便利构造器

 便利构造器就是在初始化方法的基础上,封装了对象的创建过程;

 便利构造器是"+"方法,返回本类型,方法名以类名开头

 可以有多个参数,在内部封装了alloc和初始化方法,使用起来更加简洁

 */

//初始化方法和便利构造器是相对应的;

//:先创建一个初始化方法:

-(id)initWithClor:(NSString *)clor

            brand:(NSString *)brand

            price:(CGFloat)price

            speed:(NSInteger)speed;


//遍历构造器:


+(id)studentWithClor:(NSString *)clor

           brand:(NSString *)brand

           price:(CGFloat)price

           speed:(NSInteger)speed;



#import "Student.h"


@implementation Student


@synthesize name =_name;

//作用是在老的版本的xcode,声明了一个成员变量,新版本里不需要写,如果在以后碰见,不用管;


-(void)eat{

    NSLog(@"%@",_name);//_name是成员变量;

}


-(id)initWithClor:(NSString *)clor

            brand:(NSString *)brand

            price:(CGFloat)price

            speed:(NSInteger)speed{

    self=[super init];

    

    if (self) {

        _brand =brand;

        _clor =clor;

        _price =price;

        _speed =speed;

        

    }

    

    return self;

    

}

//便利构造器

+(id)studentWithClor:(NSString *)clor

           brand:(NSString *)brand

           price:(CGFloat)price

           speed:(NSInteger)speed{

    

    Student *ca =[[Student alloc]initWithClor:clor

                                brand:brand

                                price:price

                                speed:speed];

    

    return ca;

}



#import "Student.h"


@implementation Student


@synthesize name =_name;

//作用是在老的版本的xcode,声明了一个成员变量,新版本里不需要写,如果在以后碰见,不用管;


-(void)eat{

    NSLog(@"%@",_name);//_name是成员变量;

}


-(id)initWithClor:(NSString *)clor

            brand:(NSString *)brand

            price:(CGFloat)price

            speed:(NSInteger)speed{

    self=[super init];

    

    if (self) {

        _brand =brand;

        _clor =clor;

        _price =price;

        _speed =speed;

        

    }

    

    return self;

    

}

//便利构造器

+(id)studentWithClor:(NSString *)clor

           brand:(NSString *)brand

           price:(CGFloat)price

           speed:(NSInteger)speed{

    

    Student *ca =[[Student alloc]initWithClor:clor

                                brand:brand

                                price:price

                                speed:speed];

    

    return ca;

}








@end



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值