IOS之学习笔记九(对象的初始化)

 

1、oc对象的初始化

[[** alloc] init]  分2步,alloc是开辟内存,分配在堆区,这里java和C++都一样,init是进行初始化。

[** new]和[[** alloc] init]等效,习惯用前面的。

 

 

 

 

2、对象的初始化常用方法demo

FKCard.h
#ifndef KFCard_h
#define KFCard_h
@interface KFCard : NSObject
@property (nonatomic,copy) NSString *brand;
@property (nonatomic,copy) NSString *model;
@property (nonatomic,copy) NSString *color;

-(id)initWithBrand:(NSString *)brand model:(NSString *) mode;
-(id)initWithBrand:(NSString *)brand model:(NSString *) mode color:(NSString *)color;
-(void)show;
@end
#endif /* KFCard_h */

 

FKCard.m

#import <Foundation/Foundation.h>
#import "KFCard.h"

@implementation KFCard
-(void)show
{
    NSLog(@"car brand is %@,and model is %@,and color is %@",self.brand,self.model,self.color);
}
-(id)init
{
    if (self = [super init])
    {
        self.brand = @"aodi";
        self.model = @"Q5";
        self.color = @"yellow";
    }
    return self;
}
-(id)initWithBrand:(NSString *)brand model:(NSString *) mode
{
    if (self = [super init])
    {
        self.brand = brand;
        self.model = mode;
        self.color = @"red";
    }
    return self;
}
-(id)initWithBrand:(NSString *)brand model:(NSString *) mode color:(NSString *)color
{
    if (self = [self initWithBrand:brand model:mode])
    {
       self.color = color;
    }
    return self;
}
@end

 

 

 

main.m

#import "KFCard.h"
int main(int argc,char * argv[]) {
    @autoreleasepool {
        KFCard *car = [KFCard new];
        [car show];
        KFCard *car1 = [[KFCard alloc] initWithBrand:@"奔驰" model:@"S200"];
        [car1 show];
        KFCard *car2 = [[KFCard alloc] initWithBrand:@"奔驰" model:@"S200" color:@"black"];
        [car2 show];
    }
}

 

 

 

 
 

3、运行结果如下

car brand is aodi,and model is Q5,and color is yellow
car brand is 奔驰,and model is S200,and color is red
car brand is 奔驰,and color is black

 
 
 

 

 

 

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...