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

一、类的初始化

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

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

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

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

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

1)调用父类的init方法。

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

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

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

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天笔记(类的初始化)的更多相关文章

  1. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  2. iOS阶段学习第31天笔记(UINavigationBar介绍)

    iOS学习(UI)知识点整理 一.UINavigationBar 的介绍 1)概念:UINavigationBar 是用于定义导航栏按钮的一个类对象 2)在使用UINavigationBar之前必须先 ...

  3. iOS阶段学习第29天笔记(UITextField的介绍)

    iOS学习(UI)知识点整理 一.关于UITextField的介绍 1)概念: UITextField 是用于接收用户输入的一个控件 2)UITextField  初始化实例代码: //创建一个UIt ...

  4. iOS阶段学习第26天笔记(UILabel的介绍)

    iOS学习(UI)知识点整理 一.关于UILabel的使用介绍 1)概念:UILabel是一个继承自UIView的用于展示文本信息的控件 2)UI中所有的控件都继承自UIView 即UIView 是U ...

  5. iOS阶段学习第20天笔记(MRC内存管理)

    iOS学习(OC语言)知识点整理 一.OC中的内存管理 1)概念:内存管理的对象为所有继承了NSObject的对象,对基本数据(如:int .float.double...)无效      OC中采用 ...

  6. iOS阶段学习第19天笔记(协议-Protocol)

    iOS学习(OC语言)知识点整理 一.关于协议(Protocol)的介绍 1)概念:协议指多个对象之间协商的一个接口对象,协议提供了一些方法用在协议的实现者和代理者      之间通讯的一种方式 2) ...

  7. iOS阶段学习第17天笔记(NSFileManager-NSFileHandle-文件操作)

    iOS学习(OC语言)知识点整理 一.单例模式 1)单例是一种编程思想,一个设计模式,与语言无关在采用了单例对象的应用程序中,需要单例类自行提供实例化单例对象, 不管实例化单例对象多少次,只有一个对象 ...

  8. iOS阶段学习第15天笔记(NSDate操作)

    iOS学习(OC语言)知识点整理 一.OC关于NSDate类的操作实例代码 //默认直接显示对象,显示的是格林威治时间 //获取当前日期时间的实例方法 NSDate *date1=[[NSDate a ...

  9. iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)

    iOS学习(OC语言)知识点整理 一.OC中的数组 1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的,      可以存放重复的元 ...

随机推荐

  1. [php入门] 1、从安装开发环境环境到(庄B)做个炫酷的登陆应用

    1.前言 本文适合想了解下web开发入门的小白~ 最近在根据一个网上课程学习php,课程内说道: php环境自己搭比较麻烦,可以用wamp集成开发环境,一键安装即可. 2.安装集成开发环境 下面是wa ...

  2. C struct结构体内存对齐问题

    在空间看到别人的疑问引起了我的兴趣,刚好是我感兴趣的话题,就写一下.为了别人的疑问,也发表在qq空间里.因为下班比较晚,10点才到家,发表的也晚.其实是个简单的问题.  直接用实例和内存图说明: #i ...

  3. VUE 意淫笔记

    caihg Vue.js 递归组件实现树形菜单 最近看了 Vue.js 的递归组件,实现了一个最基本的树形菜单. 项目结构: main.js 作为入口,很简单: 1 2 3 4 5 6 7 8 9 i ...

  4. 知方可补不足~SQL2005使用ROW_NUMBER() OVER()进行数据分页

    回到目录 数据分页是这个经常说的东西,无论在WEBForm还是WinForm中它都会被单独拿出来,或者是公用组件,或者是公用类库,反正对于数据分页这个东西,总是我们关注的一个话题,但事实上,数据分页归 ...

  5. TextView 显示内容时出现 ArrayIndexOutOfBoundsException 的解决方法(Android 4.1)

    很久以前做的表情输入及显示,用的系统的SpannableString,完成后的代码在其他版本的Android手机上没有问题,但是在在4.1和4.1.1的手机上显示时,有概率出现程序崩溃的问题. 下面是 ...

  6. 阿里云上安装mysql步骤/ 阿里云ECS搭建Java+mysql+tomcat环境

    使用阿里云ECS挺长一段时间了.这两天碰巧朋友小白让我一步一步教他在ECS上搭建Java+mysql+tomcat环境,所以把在这里把步骤在这简单整理了一下,以便需要的人查阅. 我购买的阿里云服务器系 ...

  7. HTML基础笔记-02

    ---恢复内容开始--- 学习网站:W3School 一.HTML的认识 纯文本语言:只显示内容,不显示样式,也不能描述语义的文档,但是也不会乱码 语义:数据的含义就是语义,数据是符号,在这表示标签 ...

  8. Struts2学习笔记 - HelloWorld总结

    相信网上已经有很多关于struts2的HelloWorld可参考,我这里就不重复了,没个学struts2的人都会做过很多个HelloWorld,而我这里就总结一下一个简单的HelloWorld 我在一 ...

  9. OOM异常产生的原因和处理方法

    一般而言,android中常见的原因主要有以下几个: 1.数据库的cursor没有关闭. 2.构造adapter没有使用缓存contentview. 3.调用registerReceiver()后未调 ...

  10. AngularJS快速入门01-基础

    记得第一次听说AngularJS这项很赞的Web的前端技术,那时还是2014年,年中时我们我的一个大牛兄弟当时去面试时,被问到了是否熟悉该技术,当时他了解和使用的技术比较多.我们询问他面试情况时,他给 ...