设为首页 加入收藏

TOP

Objective-C 浅析(一)
2014-11-23 19:18:49 来源: 作者: 【 】 浏览:35
Tags:Objective-C 浅析
1、简介
从今天开始接触IOS开发,而后则接触PHP开发,接触是为了更好的理解开发。IOS的开发前提是Objective-C,本篇简单总结其知识点。
什么是Objective-C,它是C的面向对象的扩展。
2、知识点
1、Objective-C类定义有两个部分:接口部分和实现部分。
接口部分:
@interface className:superclassName
{
Instance variable declarations
}
Method declarations
@end

实现部分:类的方法的实现。
2、NSObject
唯一根类,几乎所有的Objective-C类都是直接或间接的是NSObject的子类,它定义了类工厂方法alloc,负责为那些需要与Objective-C的内存管理系统交互的对象实例和实例方法分配内存。
3、消息
Objective-C使用一种不同的方法,叫做消息。
[receiver message]
receiver执行一个方法的对象
message 方法的名称
在任何情况下,在方括号中代码都意味着你是在给一个对象或者一个类型发送一个消息(即一个方法调用)。
4、编译器指令
以‘@’字符开头的单词是编译器指令,而不是执行代码。
5、关键字
id 保存指向对象的指针的类型( id类型意味着变量myObject可以是任意类型的对象。所以,当你编译这段代码时,它的实际类型以及它所实现的方法编译器是不知道的);在Objective-C中,所有的对象变量都是指针类型。id类型已经被预定义为指针类型,所以不需要加一个星号。
nil是一个定义的常量,指向没有对象的指针。
nil消息表示没有操作:它们不做任何事情,并且继续执行下一行代码。

在Objective-C中,nil对象的作用等同于很多其他语言的NULL指针;不同的地方在于,在nil上调用方法不会导致程序崩溃或抛出异常。我们不用在调用一个对象的方法之前检查该对象是否为空。如果你调用了一个nil对象的方法并且该方法有返回值的话,你会得到一个nil返回值。

BOOL,YES,NO 布尔型
SEL selector的缩写,选择器,保存一个Objective-C方法名表示的一种类型。
IMP 一个typedef,用于‘一个指针,它指向接收参数id、sel以及可能的其它参数并且返回id的函数’
Class 保存一个类的引用
6、Cocoa数字类型
NSInteger
NSUInteger
CGFloat
NSLog
7、开发文件
.l UNIX man页面的文件
.m 程序源文件
.pch 预编译的头文件
.h 程序头文件
8、消息转发
NSInvocation是封装为对象的一个Objective-C消息表达式,它定义了设置和获取接受者、选择器以及封装的消息表达式的参数方法以及获取返回值的方法。
9、 省
运行时支持在运行时发现对象的各种属性,这个过程叫 省。
10、@class执行
一个类类型
11、copy
NSObject的copy实现对象的拷贝。
浅复制、深赋值、可变复制(NSArray、NSDictionary、NSSet)、不可变赋值(NSNumber、NSColor)。
12、内存管理
在堆上分配内存时,不再需要就释放。
malloc -》free
13、消息细节
1、嵌套
任何消息参数都可以用返回相应类型的一个消息表达式来替换。

消息传递的关键是,编译器构建每个类和对象时所采用的数据结构。
每个类都包含以下两个必要元素:
- 一个指向父类的指针。
- 一个调度表(dispatch table)。
该调度表将类的selector与方法的实际内存地址关联起来。
每个对象都有一个指向所属类的指针isa。通过该指针,对象可以找到它所属的类,也就找到了其全部父类。

2、向nil发送消息
向一个nil接收者发送一条消息没有任何效果

3、向self发送消息
一个对象的方法调用同一对象的另一个方法,必须使用变量self作为消息接受者。

4、覆盖并向super发送消息
类可以通过在其@implementation部分提供一个不同的实现,来覆盖在其超类中定义的方法。
14、选择器
编译器指令 @selector() 将一个方法名称转换为一个SEL
一条消息的方法名部分有时候叫做选择器或方法选择器,因为,运行时使用它来选择要执行哪一个接收者方法。
15、效率
编译器将你的方法转换为C函数的时候,它在参数列表的前面添加了self和_cmd参数,通过其IMP调用函数时,要填充这些参数。直接函数调用快数倍。
16、类类型
类型为class的变量,用作指向类对象的指针。通过使用类名作作为接收者来调用类方法从而获得指向类对象的一个指针。
17、单体
一个只有单个共享的实例的类。单体类通常用来包装操作系统服务,或者用于检测面板这样的UI项。
18、框架
框架是包的一种类型,动态的载入共享的资源。总称存在frameworkName.framework的形式。
1、Objective-C或C框架
2、Cocoa框架
apple用来表示用Objective-C技术编写的mac程序的名称。它是一个伞式框架,包含3个主要框架(Foundation、Appkit、Core Data);
3、AppKit框架
构建GUI应用程序所需要的类
4、Core Foundation
一个低级层的C语言框架,对象有一个引用计数内存管理系统,对象拥有相同的内存布局则可自由转换。
5、Core Graphics
用于Quartz 2D图形的低层级API。
6、Core Animation
动画框架
7、WebKit
8、ImageIO
9、Core Image
10、Core Audio
11、OpenGL
12、OpenAL
19、可变类和不可变类
基本的类是不可变的,但用于字符或用于字节的有可变与不可变之分。
20、类簇
将复杂性隐藏到一个简单的接口的后面的一种方式。公有可见的类是一个抽象类。
类:NSString、NSArray、NSDictionary、NSSet、NSNumber和NSData都是类簇。
21、NSString、NSMutableString
字符的字节的一个数组,后面跟着一个NULL字节。
如果我们在NSString对象上调用NSString类型对象不支持的方法,编译器就会发出警告。
C字符串可以和NSString互换
NSMutableString是可变的子类
22、集合类
NSArray、NSDictionary、NSSet以及其可变的子类,都是集合类。
23、NSArray
C数组,无边界检查
24、NSDictionary
提供一种方式来处理键值对集合
25、NSSet
对象集合实现一个数学集合
26、NSNumber
存储并返回你喜欢的所有数字类型
27、NSNull
没有对象
28、NSData
字节数据、处理文件或图片等。
29、NSURL
url用来指定文件资源和网络资源的方向前进。
30、隐式循环
使用NSArray的makeObjectsPerformSelectior创建隐式循环
31、NSEnumerator
接收集合中的对象,并将其传递出来,每次一个,并且使用nex
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言中函数和指针的参数传递 下一篇C语言简单的菜单选项

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: