小白学开发(iOS)OC_构造方法(2015-07-29)

来源:互联网 发布:ubuntu服务器密码修改 编辑:程序博客网 时间:2024/06/03 21:20
 //
//  main.m
//  构造方法的基本类型
//
//  Created by admin on 15/7/29.
//  Copyright (c) 2015年 admin. All rights reserved.
//

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

int main(int argc, const char * argv[]) {
    
//  简单的来说,构造方法就是初始化成员变量的方法

    [Person new];
/*
    这里通过Person类名调用父类的类方法new,得到一个对象
    这里实际上做了三件事,分别为:
    1. 开辟存储空间,使用 +alloc方法开辟存储空间
    2. 初始化成员变量, 使用 +init 方法对对象中的成员变量初始化,系统初始化值为0
    3. 返回地址(初始化后的对象地址)
 */
//  开辟存储空间,会返回一个没有初始化的对象
    Person *p1 = [Person alloc];
//  对对象中的成员变量进行初始化,返回一个初始化后的对象
    Person *p2 = [p1 init];
    [p2 setAge:10];
    
//  开发中我们一般把这两步写在一起
    Person *p3 = [[Person alloc]init];
    [p3 setAge:20];
    
//  当我们想让对象一出生,它的某些属性就是固定值,也就是初始化一些值为我们想要的值,而是系统统一初始化为0,那么我们可以将init方法重写,或者自定义构造方法,通过参数进行赋值,例如我这里自定义构造方法,初始化age为固定值
    Person *p4 = [[Person alloc]initWithAge:100];
    NSLog(@" age = %d", [p4 age]);
/*
    4. 自定义构造方法的格式:
        > 一定是对象方法,以 “-”开头
        > 方法名一定是以init开头,
        > 方法返回值一般是id类型
    例如:
        - (id)initWithAge:(int)age
         {
            self = [super self];
                if(self)
                {
                    _age = age;
                }
            return self;
         }
 */
    return 0;
}
//
//  Person.h
//  构造方法
//
//  Created by admin on 15/7/29.
//  Copyright (c) 2015年 admin. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property int age;

- (id)initWithAge:(int)age;


@end
//
//  Person.m
//  构造方法
//
//  Created by admin on 15/7/29.
//  Copyright (c) 2015年 admin. All rights reserved.
//

#import "Person.h"

@implementation Person

- (id)initWithAge:(int)age
{
    if (self = [super init]) {
        _age = age;
    }
    return self;
}
@end
0 0