1、在同一个类A中,有方法a和方法b,方法b如何调用方法a ?
[self a]; 即让类A本身去调用(在b方法里面)
有A,B两个类,B类继承于A类,都实现了方法XX,创建B类实例b,如何让b调用A类?
[super a]; 即让B类的父类(即A类)去调用
2、面向对象包含哪些元素?
面向对象的三个基本元素:
封装,继承和多态。
多态: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
3、分类和继承的区别
分类,用来拓展类的方法,不能定义新成员,但是可以访问到私有成员
继承:子类可以通过覆盖和定义新方法来拓展父类,可新增成员,但是不能访问父类的私有成员。
4、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?C语言中讲讲static变量和static函数有什么作用
static关键字有两种意思
(1),表示变量时静态存储变量,表示变量存放在静态存储区。
(2),表示该变量是内部链接
(这种情况是指该变量不在任何{}之内,就像全局变量那样,这时候加上static),也就是说在其它的.cpp文件中,该变量是不可见的.当static加在函数前面的时候,表示该函数是内部链接,只在本文件中有效,别的文件中不能应用该函数。
不加static的函数默认是全局的。也就是说在其他的.cpp文件中,只要申明一下这个函数,就可以使用它。
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
static函数与普通函数作用域不同。static函数仅在本文件中使用。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
5、什么是KVC和KVO?
KVC(Key-Value-Coding)内部的实现:一个对象在调用setValue的时候,(1)首先根据方法名找到运行方法的时候所需要的环境参数。(2)他会从自己isa指针结合环境参数,找到具体的方法实现的接口(3)再直接查找得来的具体的方法实现
KVO(Key-Value-Observing):当观察者为一个对象的属性进行了注册,被观察对象的isa指针被修改的时候,isa指针其实不需要指向实例对象真实的类。所以我们的程序最好不要依赖于isa指针。在调用类的方法的时候,最好要明确对象实力的类名。
什么是MVC模式
MVC模式:(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型,视图和控制器。
控制器(Controller),负责转发请求,队请求进行处理。
视图(View),界面设计人员进行图形界面设计。
模型(Model),程序员编写程序应有的功能(实现算法等)
在视图中其实没有真正的处理发生,不管这些数据是联机存储,还是一个雇员列表,作为视图来讲,它只是作为一种输出并允许用户操纵的方式。
模型:MVC的三个部件中,模型拥有最多的处理任务,模型与数据格式无关,这样一个模型能为多个视图提供数据
控制器:控制器接收用户的输入并调用模型和视图去完成用户的需求。
控制器本身不输出任何东西和做任何处理,他只是接受请求并决定调用那个模型构建去处理请求,然后在确定用哪个试图来显示返回的数据。