2015-11-15 - objective-c---OC_2初始化_便利构造器

//
// main.m
// OC_2初始化_便利构造器
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

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

int main(int argc, const char * argv[]) {

// 创建对象
Zombie *z = [[Zombie alloc] init];
NSLog(@"%@ %@ %@", [z hp], [z defense], [z attack]);
Zombie *z1 = [[Zombie alloc] init];
NSLog(@"%@ %@ %@", [z1 hp], [z1 defense], [z1 attack]);
// 自定义初始化方法
Zombie *z2 = [[Zombie alloc] initWithHp:@"12" defense:@"21" attack:@"23"];
NSLog(@"%@ %@ %@", z2.hp, z2.defense, z2.attack);

// 便利构造器创建
Zombie *z3 = [Zombie zombie];
Zombie *z4 = [Zombie zombieWithHp:@"111" defense:@"222" attack:@"333"];

return 0;

}



//
// BiockZombie.h
// OC_2初始化_便利构造器
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "Zombie.h"

@interface BiockZombie : Zombie
{
NSString *_hat;// 帽子
}
// getter&setter

  • (void)setHat:(NSString *)hat;
  • (NSString *)hat;

// 自定义初始化

  • (instancetype)initWithHp:(NSString *)hp
    defense:(NSString *)defense
    attack:(NSString *)attack
    hat:(NSString *)hat;

@end


//
// BiockZombie.m
// OC_2初始化_便利构造器
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "BiockZombie.h"

@implementation BiockZombie

  • (instancetype)initWithHp:(NSString *)hp
    defense:(NSString *)defense
    attack:(NSString *)attack
    hat:(NSString *)hat
    {
    self = [super initWithHp:hp defense:defense attack:attack];
    if (self) {
    // [self setHat:hat];
    self.hat =hat;
    }
    return self;
    }
  • (void)setHat:(NSString *)hat
    {
    _hat = hat;
    }
  • (NSString *)hat
    {
    return _hat;
    }
    @end


//
// Zombie.h
// OC_2初始化_便利构造器
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Zombie : NSObject
{
NSString *_hp;// 血量
NSString *_defense;// 防御
NSString *_attack;//攻击力
}
// getter&setter

  • (void)setHp:(NSString *)hp;
  • (NSString *)hp;
  • (void)setDefense:(NSString *)defense;
  • (NSString *)defense;
  • (void)setAttack:(NSString *)attack;
  • (NSString *)attack;

// 自定义初始化方法

  • (instancetype)initWithHp:(NSString *)hp
    defense:(NSString *)defense
    attack:(NSString *)attack;

// 变量构造器
// 1. 类方法
// 2. 以小写的类名开头

  • (instancetype)zombie;
  • (instancetype)zombieWithHp:(NSString *)hp
    defense:(NSString *)defense
    attack:(NSString *)attack;

@end


//
// Zombie.m
// OC_2初始化_便利构造器
//
// Created by YIem on 15/11/25.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "Zombie.h"

@implementation Zombie
// 初始化方法
// instancetype/id 泛型指针(任意对象)

  • (instancetype)init
    {
    // 1. 调用父类初始化 处理从父类继承来的成员变量
    self = [super init];
    // 2. 判断初始化是否成功
    if (self) {
    // 3. 初始化当前类内容
    _hp = @"100";
    _defense = @"100";
    _attack = @"100";
    }
    // 4. 初始化结束后 返回对象自己
    return self;
    }
    // 自定义初始化
  • (instancetype)initWithHp:(NSString *)hp defense:(NSString *)defense attack:(NSString *)attack
    {
    self = [super init];
    if (self) {
    // 初始化
    // _hp = hp;
    // _defense = defense;
    // _attack = attack;
    // 消息语法
    // [self setHp:hp];
    // [self setDefense:defense];
    // [self setAttack:attack];
    // 点语法
    self.hp = hp;
    self.defense = defense;
    self.attack = attack;
    }
    return self;
    }
    // 便利构造器
  • (instancetype)zombie
    {
    Zombie *z = [[Zombie alloc] init];
    return z;
    }
  • (instancetype)zombieWithHp:(NSString *)hp
    defense:(NSString *)defense
    attack:(NSString *)attack
    {
    Zombie *z = [[Zombie alloc]initWithHp:hp defense:defense attack:attack];
    return z;
    }

//---

  • (void)setHp:(NSString *)hp
    {
    _hp = hp;
    }
  • (NSString *)hp
    {
    return _hp;
    }
  • (void)setDefense:(NSString *)defense
    {
    _defense = defense;
    }
  • (NSString *)defense
    {
    return _defense;
    }
  • (void)setAttack:(NSString *)attack
    {
    _attack = attack;
    }
  • (NSString *)attack;
    {
    return _attack;
    }
    @end

标签: objective-c, objective

添加新评论

Title - Artist
0:00