OC基础复习(六)之构造方法小结

写到这里心慌慌的,压力骤然而起,

1.什么是构造方法?

OC构造方法

构造方法
我们创建一个对象的时候一般喜欢直接调用一个类方法,比如有一个Person类,我们为这个Person类创建对象一般是直接这样[Person new];其实new是NSObject中的一个类方法,这个new方法中是先调用了alloc方法,alloc方法也是一个类方法,作用是创建这个类的对象,再将这个对象的指针返回;再调用创建的对象的对象方法init,作用是初始化创建的对象的属性,然后返回这个已经被初始化的对象。
比如: Person *p1 = [Person new];
完全等价于:
Person *p1 = [[Person alloc] init];
init方法叫做构造方法,它是定义于NSObject类中的一个对象方法,这个方法主要就是初始化所有的属性,基本类型属性初始化为0,非OC类型属性初始化为NULL,OC类型属性初始化为nil。因此,在默认情况下,我们创建一个对象,初始化完毕后,这个对象的属性都是有默认值的。
但是,如果我们想创建一个对象时对象的属性的默认值不是0、NULL、nil的时候,我们应该重写构造方法

2.什么是重写构造方法?为什么要重写构造方法?

3.什么是自定义构造方法?怎么理解自定义构造方法的用处?

4.instancetype的理解

时间: 2024-10-23 21:47:44

OC基础复习(六)之构造方法小结的相关文章

黑马程序员--oc基础第六篇

六. oc基础知识(内存管理下) 总结:内存管理代码规范 1.只要调用alloc那么就必须调用release: 2.set方法的代码部分 *基本数据类型直接赋值. *如果是oc对象类型 - (void) setCar:(Car *)car { if(_car!=car) { [_car release]; _car=[Car retain]; } } 3.dealloc 部分的代码规范 *一定要[super dealloc ]放在最后面. *对self(当前)所拥有的其他对象做一次release

OC基础复习(三)之类方法和对象方法的理解

面向对象的难易点:其实也就是封装:要会调封装,也要会自己封装,封装就是给出一些接口,让我们去用,我们不关心其实现,但往往学的时候不踏实 说他容易是用着容易,只要有接口,就可以完成很多我们想要的功能,但往往分不清功能是自己能实现还是通过别人写好的框架或者方法来帮我实现 所以需要记忆一些常用方法和框架.把自己的算法思想和一些接口框架相结合. OC 有两种类型的方法,类方法和对象方法(也被称为实例方法) 1.类方法:以+开头,不分配内存空间(这句话,问题来了,为什么?) 什么时候分配内存空间,很显然只

OC基础(七)构造方法与自定义构造方法

一.构造方法 在OC中构造方法是init开头的方法, 用于初始化一个对象, 让某个对象一创建出来就拥有某些属性和值. 构造方法属于对象方法,以“-”开头 例如:在创建对象的时候就调用了init方法. Person *p = [[Person alloc] init]; 可以分解为 Person *p1 = [Person alloc]; //分配空间 Person *p = [p1 init];  //初始化对象,即调用init方法 书写格式: - (instancetype)init { se

oc基础复习01-第一个OC程序

近期简单复习下OC打开iTerm工具 输入命令 mkdir reviewoc 打开Sublime Text文件 open -a Sublime\ Text 写入如下代码: 1 #include <stdio.h> 2 //main所有程序的入口 哈哈 这里就不说了 3 int main() 4 { 5 printf("Hello OC \n"); 6 } 保存为review01.m 编译文件 在reviewoc目录 cc -c review01.m 文件没有错误 直接会产生

Java基础复习(六)

1. 接口的实现类中的实现接口中的抽象方法的方法必须为public,为什么? 接口中所有的方法与变量都默认是 public 的,在接口中可以不写出来.但在实现类中,如果不明写的话,就变成了 friend  的了,也就是 “包访问权限”.而JAVA又规定,在实现接口或者覆写父类方法时,不能降低父类方法的访问权限,但是可以提高.也就是可以按照  friend protected public 来提高访问权限,但不能按照 public protected friend 来降低访问权限. 反证法: 接口

2014.12.10 OC基础复习

oc是一种没有垃圾回收机制的语言,再没有打开arc的情况下,需要手动管理内存 @为关键字的开头,也是字符串的开头 @interface --@end 写对类的声明,包括对成员变量和方法的声明,@implementaion --@end之间写对类的方法实现,方法形如- (void)setAge:int; +号表示静态方法,-号表示动态方法 对象的声明初始化都是Student *st = [[Student alloc]init]; st指针就表示该对象 st.age不是访问成员变量,而是根据情况调

2014.12.11 oc基础复习

这一天主要学习了内存管理的部分,感觉稍显复杂,但只要遵循总的原则就不会错 谁声明,谁销毁,谁retain,谁release 1.在类的成员变量是oc对象时,set方法需要写内存管理如 -(void)setBook:(Book *)book{ if( _book != book){ [_book release]; _book = [book retain]; } } 还要在调用这个set方法的类的dealloc方法中,加入[_book release] 在声明该对象成员变量的属性时,加入reta

oc基础复习05-OC的属性 和 点语法(转)

这篇文章大部分都是转载网络上的 里面有部分我更改的内容 一.设置器setter 访问器getter setter: set+首字母大写的实例变量名 如:- (void)setNickName:(NSString *) name;//参数名不要与实例变量名相同 getter: 与实例变量名相同(没有短横线),并且返回值类型也一致 例: @interface Cup:NSObject { float _price; } - (void)setPrice:(float)price; - (float)

oc基础复习03-OC的类

首先要想想面向对象和面向过程 在编程语言中 C是面向过程的 OC是面向对象的(一定要有一切即对象的思想)java也是对象对象的 js lua php是解释性语言(脚本) 不过现在好多都是模拟面向对象思想 也很不错. 在OC语言中 1.类的声明 @inteferface 类名:父类 { //这里声明类的属性 } //函数的声明 @end 2.类的实现 @implementation 类名 //函数的实现 @end 现在我们来些一个实例  写一个动物类 Animal 属性weight, sex;方法