oc构造函数
//new方法做了如下两件事,一般开发比较少用new,因为分配空间不能选择其他方式初始化 Person *p = [Person new]; //1、调用+alloc分配存储空间 Person *p1 = [Person alloc]; //2、调用-init进行初始化 Person p2 = [p1 init]; //Person *p3 = [[Person alloc] init];合起来写
构造方法用来初始化对象的方法,因此init方法为构造方法。初始化后成员变量值为0。
//重写-init方法,可以对成员变量赋值,因为子类返回类型不确定(多态),因此写id类型,id相当于NSObject *万能指针 -(id)init { //一定要先调用super的init方法,初始化父类的成员变量,如isa(指向该对象的类)和属性 //[super init];当前对象self if(self=[super init])//先赋值给self,若self不为空执行下面的 { //初始化成功do something...进行子类内部成员变量初始化 } return self; }
自定义构造方法
1、一定是对象方法,以-开头
2、返回值一般是id类型
3、方法名一般以init开头
4、父类的属性调用父类方法去处理,如[super initwithxxx],子类处理自己的
-(id)initWithName:(NSString *)name andAge:(int)age { if(self=[super init]) { _name = name; _age = age; } return self; }
析构函数
在对象计数器减为o时,自动调用dealloc
-(void)dealloc { do something... [super dealloc];//一定要在最后调用dealloc }
oc类的本质
类创建的对象为实例对象,实际上类本身也是一个对象,是个class类型的对象,简称类对象。
typedef struct objc_class *Class;
Person *p1 = [[Person alloc] init]; Person *p2 = [[Person alloc] init]; //获取内存中的类对象 Class c1 = [p1 class]; Class c2 = [p2 class]; [c1 test];//调用类的类方法,相当于[Person test] //或者 Class c3 = [Person class]; //利用class创建Person类对象 //利用Person类对象创建Person类型的对象
类对象==类名(c3==Person),一个类只有一个类对象
类的加载和初始化
1、类在程序启动时,就会加载一次项目中的所有类及分类,且只会加载一次。先加载父类再加载子类。类加载会调用类和分类+load。
+(void)load
{
}
2、当第一次使用这个类的时候,会调用当前类的+initialize方法。先初始化父类再初始化子类。可以监听类在什么时候被使用。
+(void)initialize
{
}
相关推荐
编译器会默认提供构造函数, 析构函数, 拷贝构造函数(对非静态成员属性简单值拷贝) 编译器会默认调用构造和析构, 如果不写, 系统会默认实现一个空的 必须写在public下 构造函数 与类名相同, 没有返回值, 不写void, ...
析构函数:要求在析构函数中输出必要信息; 设计成员函数用来分别设置数据成员year、month、day的值; 设计成员函数display用来在屏幕上打印日期信息; (3)设计测试程序:在main()函数中使用不同方式...
软件测试课上安排的作业,未完成,待修改 供参考
以下几种情况会调用拷贝构造函数 1. 以一个对象初始化另一个对象 2. 函数以某个对象为参数 3. 函数返回某个对象 4. 初始化序列式容器的元素 2. void test2() { Test t1(1,2); Test t2; t2=t1;//调用的不是拷贝构造...
定义一个Date 类,数据成员有year,month, day。以“年_月_日“的格式输出日期, 还提供把天加一的成员函数nextdate( ),要求能测试出如下的结果: a. 能够进入下一个月。 b. 能够进入下一个年。 c. 能显示日期。
(1)从Base类派生圆类(Circle)、正方形类(Square),圆类新增数据成员半径(radius),正方形类新增数据成员边长(a),圆类和正方形类都有构造函数,修改、显示数据成员值的函数,求面积函数。 (2)写出main( )...
标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数。 C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。 C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和...
day06【类与对象、封装、构造方法】.pdf
day2(通用函数、组函数、多表连接).ZIW
hive中使用的日期函数next_day小计,主要用于记录该函数的使用方法以及一些示例,方便其他人查找使用
perl学习笔记,让你快速掌握perl的基本概念 写一个完整的perl包,perl类和perlperl构造函数、析构函数
声明一个时间类,时间类中有3个私有数据成员(Hour, Minute, Second)和两个公有成员函数(SetTime和Print_Time)。SetTime根据传递的3个参数为对象设置时间;Print_Time负责将对象表示的时间显示输出.
第四天的学习内容 学习了while函数的应用 还有一些参数的知识
day11函数进阶.py
day07【类与对象、封装、构造方法】.pdf
Hadoop-2.8.0-Day08-Hive函数与HQL详解-课件与资料.zip
day14-函数式接口&Stream
DAY05:函数(下)
DAY04:函数(上)
day06【类与对象、封装、构造方法】 day07【Scanner类、Random类、ArrayList类】 day08【String类、static关键字、Arrays类、Math类】 day09【继承、super、this、抽象类】 day10【接口、多态】 day11【final、权限...