Objective-C

1.Objective-C语言特性

2.static __block const

3.Object-C的内存管理

4.RunLoop

5.iOS消息传递机制

6.iOS程序生命周期

7.MVC设计模式MVVM

8.UIView CALayer Frame 与bounds

9.根类 NSObject

10.多线程简介

11.数据持久化

12.JSON和XML HTML 自定义报文

13.网络编程 HTTP TCP/IP Socket ASI AFNetwork

14.AppStore上传 及远程推送

15.XMPP

16.Block

===========================================================

1.Objective-C语言特性

Objective-C是面向对象的语言

Objective-C和Java C++一样,有封装,继承,多态,重用。

但是它不像C++那样有重载操作法、模版和多继承,也没有Java的垃圾回收机制。但

Objective-C的优点

Objective-C语言有C++ Java等面向对象的特点。Objective-C的优点是它是动态的。动态能力有三种:

动态类-运行时确定类的对象

动态绑定-运行时确定要调用的方法

动态加载--运行时为程序加载新的模块

动态类型(Dynamic typing)

运行时决定对象类型,id类型

id obj = someInstance;

if ([obj isKindOfClass:someclass])

{

someclass*classInstance = (someclass *)obj

}

动态绑定

动态绑定基于动态类型,某个实例对象类型被确定后,将某些属性和响应的方法绑定到实例上。该队相对应的属性和响应者消息也被完全确定。

在OC中最常用的是消息传递机制。调用实例的方法,所做的是向该实例对象的指针发送消息,实例在收到消息后,

从自身实现中寻找响应这条消息的方法。

在Cocoa层,我们一般向一个NSObject对象发送 -respondsToSelector活着instanceRespondToSelector,在消息机制被触发前

+resolveClasssMethod 和+resolveInstanceMethod将会被调用,此时有机会动态的响雷或者实例添加新方法

动态加载

在Retina设备上加载@2x的图片

基本动态特性在常规的Cocoa开发中非常常用,由于Cocoac程序大量的使用Protocol-Delegate中的设计模式,因此大部分delegate指针类型必须是id

以满足运行时delegate的动态转换(Java里这种设计模式被称为Strategy?)

OC的动态性表现为三个方面:动态类型,动态绑定,动态加载。之所以叫动态,是因为必须到运行时(runtime )才会做一些事

面向对象的三个基本特征是:封装、继承、多态。

封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的 数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。隐藏对象的属性和实现细节,仅对外公开接口,提高代 码安全性,封转程度越高,独立性越强,使用越方便。 继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过 继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类” 多态性:允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子 对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针

我们说的obc是动态运行时语言是什么意思? 多态。主要是将数据类型的确定由编译时,推迟到了运行时。这个问题其实浅涉及到两个概念,运行时和多态。简单来说, 运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法。多态:不同对象以自己的方式响应 相同的消息的能力叫做多态。意思就是假设生物类(life)都用有一个相同的方法-eat;那人类属于生物,猪也属于生物,都 继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法。也就是不同的对象以自己的方式响应了相同的消 息(响应了eat这个选择器)。因此也可以说,运行时机制是多态的基础

Gategory类别的作用?

有时我们需要在一个已经定义好的类中增加一些方法,而不想去重写该类。比如,当工程已经很大,代码量比较多,或者类中已经包住很多方法,已经有其他代码调用了该类创建对象并使用该类的方法时,可以使用类别对该类扩充新的方法。

注意:类别只能扩充方法,而不能扩充成员变量。

category extension protrol

分别描述类别(categories)和延展(extensions)是什么?以及两者的区别?继承和类别在实现中有何区

别?为什么Category只能为对象添加方法,却不能添加成员变量?

类别:在没有原类.m文件的基础上,给该类添加方法; 延展:一种特殊形式的类别,主要在一个类的.m文件里声明和实现延展的作用,就是给某类添加私有方法或是私有变量。 两个的区别:延展可以添加属性并且它添加的方法是必须要实现的。延展可以认为是一个私有的类目。 继承和类别在实现中的区别:类别可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修 改。并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。 Category只能为对象添加方法,却不能添加成员变量的原因:如果可以添加成员变量,添加的成员变量没有办法初始 化----这是语言规则

什么是Protocol?什么是代理?写一个委托的interface?委托的property声明用什么属性?为什么? Protocol:一个方法签名的列表,在其中可以定义若干个方法。根据配置,遵守协议的类,会实现这个协议中的若干个方 法。

iOS有没有垃圾回收?

Objective-C 2.0也是有垃圾回收机制的,但是只能在Mac OS X Leopard10.5 以上的版本使用。

IPhone iOS有没有垃圾回收?autorelease 和垃圾回收制(gc)有什么关系?

没有。autorelease只是延迟释放,gc是每隔一段时间询问程序,看是否有无指针指向的对象,若有,就将它回收。他们 两者没有什么关系。

What is lazy loading?

就是懒加载,只在用到的时候才去初始化。也可以理解成延时加载。 我觉得最好也最简单的一个列子就是tableView中图片的加载显示了。 一个延时载,避免内存过高,一个异步加载,避免线程堵塞。

Object-C有多继承吗?没有的话用什么代替?

没有,多继承在这里是用protocol 委托代理来实现的

cocoa 中所有的类都是NSObject 的子类,你不用去考虑繁琐的多继承 ,虚基类的概念.ood的多态特性 在 obj-c 中通过委托来实现.

ARC

iOS8 新特性

什么是动态链接库和静态链接库?调用一个类的静态方法需不需要release?