OC面向对象-OC基础早知道

1.内存管理的基本原则:

对自己拥有的对象负责,凡是你通过retain,alloc,copy等手段获得了所有权的对象,都必须在你不再使用的时候,由你来调用release,autorelease等手段来释放对它的所有权。

在一定的代码段内,对同一对象所做的copy,alloc和retain的操作次数应当与release和autorelease操作的次数相等。

可以在类的dealloc方法中释放你占有的实例变量。

对于便利构造器和访问器来说,你没有通过上面的手段获得对象的所有权,因此在这些情况下,你无需对获得的对象进行额外的释放操作。

2.self和super是什么,id表示什么数据类型:

self指本类的某一个对象,有时候也指类对象。super指父类。id指任意对象类型,不能表示基本数据类型。

3.叙述一下实例变量和局部变量的作用范围。

局部变量的作用范围:它所在的语句块和所在的方法内有效。

实力变量的作用范围:本类所有的实例方法中有效,如果有子类,保护类型的实例变量在子类中也有效,公有类型的实例变量会在所有类中有效,一般不提倡使用公有,这违背了封装的特性。

4.实例变量的可见级别:

三种可见级别:public,protected,private。默认的可见级别是protected。

public的可见度很高,所有类可见,protected本类及子类可见。private只有本类里的实例方法可以访问。

5.面向对象和面向过程有什么不同?

面向对象和面向过程是从不同角度出发的,

面向过程是一种以时间为中心的编程思想,就是分析问题需要经过对少步骤才能解决,然后用函数把这些步骤一步一步实现,使用的时候一个一个一次调用就可以了。

面对对象是一种以事物为中心的编程思想,把构成问题的事物分解成各个对象,简称 对象的目的不是为了完成某一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

6.子类从父类那里得到什么,cocoa中常见的集合有哪几种

除了私有变量之外的所有实例变量和实例方法;如果父类中类目和协议,也将一起得到。

数组、集合、字典。

7.类目和延展有什么作用?

类目:为已知的类增加新方法、作为子类的替代手段,给类中的方法分类、易于多人合作开发同一个类。

延展:通过在本类的定义里使用类目来声明私有方法,也是对类的一种扩展。

类目和 延展只能增加实例方法,不能增加实例变量。

8.copy和retain的区别

copy是内容拷贝,retain是指针拷贝。copy其实是建立一个相同的对象,其对象地址和原来的对象的地址不同,

retain则是相当于把指针拷贝了一次,地址仍然相同。

只有接受了NScopying协议的对象才能使用copy。

9.协议和类的区别

类的接口声明是严格与特定的类关联的,尤其是由本类细线的方法的声明,协议声明的方法与任何特定的类都无关,它可以被任何类来实现,协议本质上就是一堆还未与任何类的实现代码关联的方法的声明,只有声明部分,没有实现部分,协议里面的方法也可以设置成optional。

时间: 2024-11-06 09:54:39

OC面向对象-OC基础早知道的相关文章

iOS开发OC基础:OC基础概念总结,OC面向对象的思想

一.什么是OOP: OOP(Object Oriented Programming):面向对象编程 二.面向对象和面向过程的区别: 面向过程编程:分析解决问题的步骤,实现函数,依次使用面向对象编程:分解问题组成的对象,协调对象间的联系和通信,解决问题. 面向过程是以事件为中心,关心的是完成这个事件的详细步骤:面向对象是以事物为中心,关心的是事物应该具备的功能,而完成一个事件只是事物所有功能里面的一个小功能(以过程为中心,以对象为中心) 三.类和对象 对象定义了解决问题的步骤中的行为,不刻意完成一

OC方面的基础笔记摘录

OC方面的基础笔记摘录: 1.类的基本用法 #import <Foundation/Foundation.h>// 大体上就是include, 用于包含头文件, 但是即使头文件中, 没有ifndef defined endif, 仍然能够踢除重复包含的头文件// [email protected] section----// OC中声明和实现是分离的, 两个都必须有.@interface Fraction : NSObject {    // @interface 类名: 父类名字// 在这里

OC面向对象封装

OC面向对象封装 一.面向对象和封装 面向对象的三大特性:封装(成员变量),继承,多态 在OC语言中,使用@interface和@implementation来处理类. @interface就好像暴露在外面的时钟表面,像外界提供展示以及接口,@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来. 二.Set方法 在研发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public,@protected等关键字修饰,而是使用Set方法来为对象提供成员变量值,

转:OC面向对象—多态

OC面向对象—多态 一.基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态. 在使用多态是,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指向子类对象. Animal类的声明 Animal类的实现 Dog类继承自Animal类 Dog类的实现 测试程序: 二.使用注意 代码分析: Dog *d=[[Animal  alloc] init];   动物是一条狗?语义正确吗? NSString *str=[Dog  new];     狗是一个字符串?

黑马程序员--Objective-C之--OC面向对象的三大特征

OC面向对象的三大特征是封装.继承和多态. OC语言也支持面向对象的三大特征,OC提供了@private.@package.@protected.@public等访问控制符来实现封装 OC也允许子类来继承父类,并且支持多态. 一.封装 封装指的是將对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法对内部信息的操作和访问. OC的封装特性需要通过使用访问控制符来实现. (一).访问控制符 1.@private:当前类访问权限.如果类的成员变量使用@priva

OC面向对象-多态

OC面向对象-多态 一.基本概念 1>多态在代码中的体现,即为多种形态,没有继承就没有多态 2>在使用多态时,会进行动态检测,以调用真实的对象方法 3>多态在代码中的体现即父类指针指向子类对象 Animal类的声明 #import <Foundation/Foundation> //声明一个Animal类,该类继承自NSObject @interface Animal : NSObject //在Animal类中声明一个eat的对象方法 -(void) eat; @end A

黑马程序员-OC面向对象继承关系和组合关系笔记

继承关系是描述类和类之间的关系,两个类分别称为子类和父类,子类继承了父类,子类就拥有了父类的属性和方法: 继承的关系特点描述出来就是:** "是" **  (例如:学生类 是 人类) 组合关系描述的语句是:**** "拥有" ***  (例如:学生有成绩这个属性,而成绩属性本来就是一个成绩类的对象 ) 继承示例代码: #import <Foundation/Foundation.h> //Animal类的声明 @interface Animal : NS

OC面向对象之方法

OC面向对象之方法 设计一个Caculator计算器类,它拥有计算的功能(行为) 1不带参数的方法 设计一个返回PI的方法 //方法声明 -(double)pi; //方法实现 -(double) pi { Return 3.1415926; } 方法声明 方法调用 2带一个参数的方法 设计一个计算平方的方法 //方法声明 -(double)square:(double)number; //方法实现 -(double)square:(double)number { Return number *

OC面向对象的三大特征

OC面向对象的三大特征 1.OC面向对象的三大特封装 1)封装:完整的说是成员变量的封装. 2)在成语方法里面的成员变量最好不要使用@public这样会直接暴露在外面被别人随随便便修改,封装的方法还可以达到过滤无效数据的作用. 3)对成员变量只读(readonly):只允许外界访问我的no,不允许外界修改我,只需要提供get方法. 4)对成员变量只写:不允许外界访问我的no,只允许外界修改我,只需要提供set方法. set 方法的注意点: 作用: 提供一个方法给外界设置成员变量值,可以在方法里面