OC语言day04-13自定义构造方法以及成员变量名称的注意点

pragma mark 自定义构造方法以及成员变量名称的注意点

pragma mark 概念

/**
 // 属性名称 不要以new开头,有可能会引发 一些未知的错误
 // 方法名也不要以new开头
 */

pragma mark 代码

#import 
#pragma mark 类
#import "Person.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
    Person *p = [[Person alloc]init];
    NSLog(@"%@",p);
    [p newTest];
    return 0;
}

Person.h //人类
#import 

@interface Person : NSObject
{
    // 属性名称 不要以new开头,有可能会引发 一些未知的错误
    // 方法名也不要以new开头
    double newHeight;
}
@property int age;
@property NSString *name;

#warning 方法名也不要以new开头
- (void)newTest;

/*
 自定义构造方法:
 其实就是自定义一个init方法
 1. 一定是对象方法
 2. 一定返回id/instancetype
 3. 方法名称 一定以init开头
 */
#warning 自定义构造方法
- (instancetype)initWithAge:(int)age;

// 一个类可以有0个 或者 多个自定义构造方法
- (instancetype)initWithName:(NSString *)name;

// 自定义构造方法 可以有1个或多个参数
- (instancetype)initWithAge:(int)age andName:(NSString *)name;

@end
Person.m
#import "Person.h"

@implementation Person

- (instancetype)init
{
    if (self = [super init]) {
        _age = 5;
    }
    return self;
}
#warning 方法名也不要以new开头
- (void)newTest
{
    NSLog(@"test");
}
#warning 自定义构造方法
// 注意 自定义构造方法中的init后面的With的W一定要大写
//- (instancetype)initwithAge:(int)age
- (instancetype)initWithAge:(int)age
{
    if (self = [super init]) {
        _age = age;
    }
    return self;
}

- (instancetype)initWithName:(NSString *)name
{
    if (self = [super init]) {
        _name = name;
    }
    return self;
}
- (instancetype)initWithAge:(int)age andName:(NSString *)name
{
    if (self = [super init]) {
        _age = age;
        _name = name;
    }
    return self;
}
#warning 重写(description)描述方法
- (NSString *)description
{
    NSLog(@"%f",newHeight);
    return [NSString stringWithFormat:@"age = %i, name = %@",_age,_name];
}
@end

你可能感兴趣的:(OC语言day04-13自定义构造方法以及成员变量名称的注意点)