iOS阶段学习第12天笔记(类的初始化)

摘要:
iOS学习知识点整理一、类的初始化1)init初始化方法:一般和alloc一起调用,用于给成员变量初始化。3)带参的初始化方法,是实例方法,必须以initWith开头。例如:1-initWithName:nameandPrice:priceandPage:page;2Book*b3=[[Bookalloc]initWithName:@"iOS开发"andPrice:100andPage:600];4)初始化类时需要判断父类对象是否已经初始化成功只有当父类对象初始化成功了才可以给类成员赋值。实例代码:1-init2{3//调用父类的方法初始化从父类中继承的成员变量4//super实际上是一个编译器符号,表示调用父类的方法5self=[superinit];6if(self!

iOS学习(OC语言)知识点整理

一、类的初始化

1)init初始化方法(构造方法):一般和alloc一起调用,用于给成员变量初始化。

2)id类型:相当于C中的void*,可以指向任何对象,不能加*,类似.net或java中的泛型。

3)带参的初始化方法(自定义的初始化方法),是实例方法,必须以initWith开头 。
例如:

1 -(id)initWithName:(NSString*)name andPrice:(float)price andPage:(int)page;
2 Book *b3=[[Book alloc]initWithName:@"iOS开发"  andPrice:100 andPage:600];

4)初始化类时需要判断父类对象是否已经初始化成功只有当父类对象初始化成功了才可以给类成员赋值。
初始化方法三步原则:

1)调用父类的init方法。

2)初始化自己的成员变量。

3)返回self 对象。
实例代码:

1  -(id)init
2 {
3     //调用父类的方法初始化从父类中继承的成员变量
4     //super实际上是一个编译器符号,表示调用父类的方法
5     self=[super init];
6     if(self!=nil){  //nil相当于c中的NULL,如果父类初始化成功,才可 以继续操作(实现成员变量的初始化)
7         _name=@"myBook";
8         _page=300;
9         _price=50;
10 }
11     return self;//返回当前对象
12 }

5)点语法的介绍,点语法本质是一个方法的调用;点语法调用的方法一般只能是一个参数的实例方法。

6)@property声明属性,会自动生成对应属性的set,get方法 ; 功能相当于以下2个方法的声明

1、-(void)setName:(NSString *)setname;

2、-(NSString *)getname;

7)self的说明,如果是在实例方法中self代表当前调用此方法的实例对象,如果是在类方法中self代表当前所在类的类对象。

8)@synthesize合成方法体 会自动生成property所对应元素的方法体,@synthesize name =_name;表明方法是操作成员变量_name,

如果_name不存在,会自动创建一个 成员变量_name;如果要使用@synthesize,必须有@property; 但有@property 可以没有@synthesize。

9)@property 可以同时声明同种数据类型的多个属性;例如:@property(nonatomic,assign)int age,ID。

10)@property的修饰符介绍:

1、readonly:只读,只生成getter方法,没有setter方法。

2、 readwrite:可读写,会生成setter和getter方法,默认是readwrite

3、nonatomic:不需要考虑数据同步,单线程应用程序中效率较高

4、atomic:需要考虑线程同步,效率低,默认是这种。

与内存管理相关:
5、assign:直接赋值,一般用于int、float、double、long等基本类型

6、retain:一般用于对象

7、copy:一般用于字符串

8、默认是readwrite、atomic、assign

二、关于继承的介绍

1)子类继承父类:会继承父类中所有的成员变量(包括私有的)和方法,还可以增加自己特有的成员。

2)当父类的方法不适合子类,可以对其方法进行重写,重写需要方法和父类中的方法名完全一样。

3)当两个类有很多相同的属性和方法时,可以将相同的部分提取出来构成父类,让这两个类继承父类

当父类的功能不能满足需求时,可以考虑继承父类创建子类,如果类A完全拥有类B的部分属性和方法时,

可以考虑类B继承类A,也可以考虑组合。

1、继承的好处:可以表示类与类之间的关系,可以统一接口.

2、缺点是:耦合性太强。

4)super关键字的介绍:

1、super实际上是一个编译器符号,用于调用父类的方法

2、当子类重写父类的方法,同时又想保留父类的功能时,可以用super调用

3、super处在类方法中,自动调用父类的类方法,处在实例方法中,自动调用父类的实例方法

免责声明:文章转载自《iOS阶段学习第12天笔记(类的初始化)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇2 模拟登录_Post表单方式(针对chinaunix有效,针对csdn失效,并说明原因)C#winform中ListView的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java ArrayList【笔记】

Java ArrayList【笔记】 ArrayList ArrayList基本结构 ArrayList 整体架构比较简单,就是一个数组结构 源码中的基本概念 index 表示数组的下标,从 0 开始计数 elementData 表示数组本身 DEFAULT_CAPACITY 表示数组的初始大小,默认是 10 size 表示当前数组的大小,类型 int,...

深入理解Android相机体系结构之3---相机服务层

一、简介 Camera Service被设计成一个独立进程,作为一个服务端,处理来自Camera Framework 客户端的跨进程请求,并在内部进行一定的操作,随后作为客户端将请求再一次发送至作为服务端的Camera Provider,整个流程涉及到了两个跨进程操作,前者通过AIDL机制实现,后者通过HIDL机制实现,由于在于Camera Provide...

mysql免安装配置

  最近在通过zip包配置mysql,mysql版本:5.7.13。配置过程中,踩了一些坑,下面做了一些简单的记录,配置的具体过程如下:     1、将mysql zip包解压,放到指定目录中,在系统环境变量中配置系统环境变量,将mysql bin文件夹添加到path变量中。假如mysql放在:C:Program Files (x86)MySQLMySQL...

Camera Service

上面这张图比较清楚的表现了camera provider进程在camera架构中位置,作为承上启下的部分,和cameraserver进程和底层的驱动交互,camera provider进程非常重要,camera HAL层几乎全部运行在camera provider进程中完成。 首先看下camera provider所在源码中的位置:hardware/in...

vue列表页进入详情页,返回列表项不刷新

功能 像搜索功能,在点击某项进入详情页,再回到搜索界面,如果不做特殊处理,初始化到原来的状态,在vue中可以使用keep-alive缓存搜索界面,达到数据不刷新的结果。 思路 在搜索路由对象的meta添加一个keepAlive属性,值为true,表示在路由切换的时候,会被缓存。这样一来搜索界面的数据不会被初始化。 缓存界面 keepAlive如果为true...

Go-结构体

Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。 类型别名和自定义类型 自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的...