oc阶段学习总结


*****************************************************************************************************************
面相对象;
三大特性:
封装:隐藏实现细节,安全
步骤:1.降低成员变量的可访问性 @private @protected
      2.提供getter和setter的方法 (1.以set作为前缀   2.@property @syrhesize)

继承:代码的可重用
    子类可以继承父类中非私有的成员(不是@private)

多态:利于系统的课扩展
    1.要有继承关系(方法的重写)或者遵从协议

    用同一个引用对象来引用不同的实例对象,执行不同的操作,表现出来多种形态


定义类的语法:
创建一个类分为两个部分:
1.例的声明部分
@interface 类名:父类名
@property (参数) 数据类型 属性名;
方法的定义
@end

2.类的实现部分
@implemation 类名
实现部分的代码
@end

NSObject类事所有的类的老祖宗

构造方法:
作用:用于初始化类的相关成员的
默认的构造方法(无参的构造方法)
init
有参的构造方法
以initWith开头来命名的
面相对象的几个关键字:
super 代表父类,通过它可以调用父类中的成员
self代表类的当前对象

id是OC中增加的数据类型,是一个万能指针,可以指向任意引用类型的对象
BOOL YES NO 0

可以重写父类的description方法,可以实现兹定于输出对象的格式字符串
- (NSString *)description;
+ (NSString *) description;

对象方法:
以-开头,这种方法是属于具体的某个对象,只能通过对象来调用
类方法:
以+开头,这种方法是不属于具体的某个对象,只属于类,只能通过类来调用

字符串
分为两种类型的字符串
1.不可变的字符串
NSString
[[NSString alloc]init];

[[NSString alloc]initWithString:@ “字符串”];
[[NSString alloc]initWithContentsOfFile:@ “文件的路径”];
[[NSString alloc]initWithContentsOfUrl:@ “url”];

从c的字符串转成OC的
[[NSString alloc]initWithUTF8String: “ c的字符串”];
从OC转成c的字符串
[@ “oc的字符串”UTF8String ]
@“…”

2.不可变的字符串,是不可变的字符串类的子类
NSMutableString
方法:
appendString:@“”
appendString:@ “格式控制”,输出列表
insertString:@ “” atIndex:下标
replace….
substringToIndex
substringFromIndex
substringWithRange:NSRange
upperCase
lowerCase
componentsSeparator

数组:
1.不可变数组
NSArray
方法:
initWithObjects:…..,nil

拼接:componentsJoin

2.可变数组
NSMutableArray
方法:
addObject:
insertObject:atIndex:
removeObjectAtIndex:
removeObject:
objectAtIndex:
replaceObjectAtIndex:withObject:
exchangeObjectAtIndex: withObjectAtIndex:
firstObject:
lastObject:
indexWithObject:…

字典:
不可变
NSDictionary
@{key:value,…}
方法:
initWithObjectsAndKey:….,nil
dictionaryWithObjectsAndKeys:….,nil

可变
NSMutableDictionary
方法:
setObject: forKey:
removeObjectForKey:
objectForKey:

遍历:
for(){}
for (in){}
枚举
NSEnumerator
objectEnumerator 正向
reverseObjectEnumerator 反向
nextObject 获取下一个枚举值

SEL 保存方法的内存地址
通过它间接调用方法
把方法可以做为参数进行传递
创建:
1.@seletor(方法名)
2.NSSelectorFromString(@“方法名”)

间接调用:
[对象名 performSelector:SEL对象 withObject: withObject:]

分类:categary
不破坏原有类的基本上,对类的功能进行扩展
两个文件

@interface 类名(分类名)
方法的定义
@end

类的实现部分
@implemation 类名(分类名)
实现部分的代码
@end


内存管理:
都有一个内部计数值,当该值为0,则会系统回收,会自动执行dealloc方法
alloc new copy  +1
retain -1
release -1
黄金法则:
谁创建,谁负责释放
谁retain,谁负责释放

@property (参数)
三大类
1.属性是否可读写
2.是否多线程(默认多线程)
3.内存管理  基本数据类型assign 引用 类型 retain arc管理  (NSString和block可以用copy)


自动内存释放池
autorelease方法 把该对象加入到自动内存释放池,只要内存释放池销毁,则它管理的对象自动执行一次
release操作
@autorelease
[[[类名] init] autorelease];

arc 自动内存管理,则不能调用realease retain dealloc

文件操作:
1.文件操作 NSFileManager
2.文件内容操作 NSFileHandler

二进制类
NSData
writeToFile:
NSArray NSDictionary write…

归档和解归档
归档:
1.可变的二进制对象
NSMutableData
2.归档对象
NSKeyedArchiver
3.进行归档操作
encodingObject:forKey:
4.结束归档
finishEncoding
5.把可变二进制对象中的数据写到文件中

解归档:
1.不可变的二进制对象
NSData
initWithContentsOfFile:
2.解归档对象
NSKeyedUnArchiver
3.进行解归档
decodingObjectForkKey:
4.结束解归档
finishDecoding

自定义类要实现归档和解归档:
就一定要遵从NSCoding协议,实现它里面的两个方法


协议:类似于接口
定义:
@protocol 协议名<NSObject>
方法的声明
@end

一个协议可实现其他协议
@protocol 协议名<其他协议>
方法的声明
@end

一个类可遵从多个协议
@interface 类名:父类名<协议,...>

@end
OC是单继承,多实现
方法声明有两大类:
@required 必须实现
@optional 可选实现

持有协议的id指针,
id<协议名字>变量名
只能引用遵从了协议的类的对象

代理
委托方:持有协议的id指针,用来指向代理方
代理方:继承协议

回调:
委托方:继承协议
代理方:持有协议的id指针

JSON解析
JSON数据格式:
1.JSON对象
{key:value,…..}  ——————>NSDictionary
2.JSON数组
[

]
[
{

}
]            ————————>NSArray

NSJSONSerialization
把程序中的对象转成Json

把JSON转成程序中的对象
JSONObjectWithData


XML解析
DOM解析
第三方库GDATA

GDataXmlDocument
GDataXmlElement
1.文件
NSString
initWithContentsOfFile:
initWithContentsOfUrl:        ———————————————NSUrl urlWithString:url
2.
GDataXmlDocument
initWithXmlString: options :error:
3.根结点
GDataXmlElement        [GDataXmlDocument 对象 rootElement]
4.
(1)层层的解析
children
attributes
(2)xpath
[GDataXmlElement对象 nodesForXpath:@“”]

block代码块:
返回值的数据类型(^block变量名)(形参类型列表)=^(形参列表){};

posted @ 2015-09-11 16:56  阿凡提王  阅读(152)  评论(0)    收藏  举报