pragma mark 自定义构造方法以及成员变量名称的注意点
pragma mark 概念
/**
// 属性名称 不要以new开头,有可能会引发 一些未知的错误
// 方法名也不要以new开头
*/
pragma mark 代码
#import <Foundation/Foundation.h>
#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 <Foundation/Foundation.h>
@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