您的位置:首页 > 其它

OC基础语法学习4:自定义构造方法和description方法

2015-05-30 01:23 483 查看

一、构造方法

构造方法默认是:init

-(instancetype)init
{
if(self = [super init])
{
//初始化成员变量
}

return self;
}


自定义构造方法:

.h文件中

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property int a;
//声明构造方法
-(instancetype)initWithA:(int)a;

@end


.m文件中

#import "Person.h"

@implementation Person
//实现构造方法
-(instancetype)initWithA:(int)a
{
if (self = [super init]) {
_a = a;
}
return self;
}

@end


调用:

#import <Foundation/Foundation.h>

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

//调用构造方法
Person * p = [[Person alloc]initWithA:10];

NSLog(@"%@",p);

}
return 0;
}


注意:

自定义的初始化方法,方法名称initWithXXX开头后面的随意,千万不能写成initwithXXX,否则编译器报错


报错的结果:

cannot assign to 'self' outside of a method in the init family


二、description方法

description方法的使用:

description方法默认实现的时返回类名和对象的内存地址。


重写description方法,来实现自己想要的输出

.h文件中

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property int a;
//声明构造方法
-(instancetype)initWithA:(int)a;
//声明description方法
-(NSString*)description;

@end


.m文件中

#import "Person.h"

@implementation Person
//实现构造方法,initWithXXX
-(instancetype)initWithA:(int)a
{
if (self = [super init]) {
_a = a;
}
return self;
}
//实现description 方法
-(NSString*)description
{
return [NSString stringWithFormat:@"a = %d",_a ];
}

@end


调用:

#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//调用构造方法
Person * p = [[Person alloc]initWithA:10];
//自动调用description方法
NSLog(@"%@",p);

}
return 0;
}


输出结果:

2015-05-30 01:10:44.163 自定义构造方法[970:96905] a = 10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oc