OC中init方法的重写和自定义
来源:互联网 发布:第六届社交网络 编辑:程序博客网 时间:2024/05/16 11:20
一、init方法介绍
OC中的init方法的作用是在对象实例化后对其初始化,在其它编程语言中(如Java、C++)都有构造方法,OC中init方法和构造方法是一个概念的。
假设有如下的类声明和实现:
#import <Foundation/Foundation.h>@interface Student : NSObject@property NSString *name;@property int age;@property float score;-(void)show;@end@implementation Student-(void)show{ NSLog(@"I am a Student,My name is %@ ,%d years old",_name,_age);}@end
调用Student类的类方法new
Student *s1=[Student new];
其等价于
Student *s2=[[Student alloc] init];
其中alloc方法用于实现化一个对象,init用来将对象初始化。
默认的初始化规则是:
基本数据类型初始化为0
指针数据类型初始化为空
如果我们不想使用默认的初始化规则,则可以重写init方法或自定义init方法。
二、重写init方法
重写init方法必须符合如下规范:
- (instancetype)init{ self = [super init]; //用于初始化父类 if (self) {// do something } return self;}
下面我们将重写Student类的init方法
- (instancetype)init{ self = [super init]; //用于初始化父类 if (self) { self.name=@"小明"; self.age=18; } return self;}
在main函数中使用使用new类方法实例化一个对象
Student *s1=[Student new];[s1 show];
运行结果:
I am a Student,My name is小明 ,18 years old
Program ended with exit code: 0
三、自定义的init方法
自定义的init方法常用于在初始化对象时指定对象的值,同样的,自定义的init方法也需要遵守一定的语法规范:
- (instancetype)initWithName:(NSString *)name andAge:(int)age{ self = [super init]; if (self) {// statements } return self;}
自定义的init方法需要在@inferface中声明而且其中方法名必需符合initWithXXX: … andXXX:…
否则编译编译器不会把它当做init方法,导致错误。
在main函数中使用使用自定义init方法实例化一个对象
Student *s2=[[Student alloc ]initWithName:@"小华" andAge:21];[s2 show];
运行结果:
I am a Student,My name is小华 ,21 years old
Program ended with exit code: 0
阅读全文
0 0
- OC中init方法的重写和自定义
- 重写OC中的init方法
- OC中initialize方法和init方法的区别
- 黑马程序员——构造方法之init的重写和自定义构造方法
- 重写构造方法init与自定义构造方法的详解
- OC中重写构造方法及自定义构造方法
- oc中new和init的区别
- oc中init和initialize的区别
- kidd风的IOS日志之OC中initialize方法和init方法的区别
- Objective-c - 构造方法(init方法)和init方法的重写
- [基础]OC的initialize和init方法的区别
- OC初始化中new和alloc init的区别
- OC初始化中new和alloc init的区别
- OC 中New和alloc/init的区别
- python继承和重写init方法
- python继承和重写init方法--实例
- OC中initialize&& load && init方法
- Objective-C学习笔记(二十二)——初始化方法init的重写与自定义
- Qt Creator5.7添加qwt绘图插件之成功案例解析
- PotPlayer恢复默认设置
- Android Dialog使用
- leetcode 17. Letter Combinations of a Phone Number
- linux执行sh文件
- OC中init方法的重写和自定义
- JAVA发送手机短信
- Attribute "xmlns" was already specified for element "web-app".问题的解决
- 用JavaScript改变table的背景色
- java的反射机制
- CSS文本超出n行就隐藏并显示省略号
- 生产与消费者三种模型
- Ubuntu循环登录libGL error: fbConfigs swrast等
- 在CentOS 7 64位系统上安装wps