Ojective-C 回顾、总结

oc总结
第一章:类和面向对象
1.类和对象的区别:类是一组具有相同(特征)属性和行为(功能)的事物的集合。类描述这类事物应该具有哪些行为和特征,而对象真正去实现行为和特征,对象是类的具体。

.m ,.h文件存储的内容
.h文件:声明性的东西,属性,方法,协议
.m文件:实现.h文件中声明的东西。

第二章:属性
属性定义和属性合成器

@property NSString* name;

内部:

-(void) setName:(NSString *)name;

-(NSString*) name;


@synthesize name = _name;

内部:

-(void) setName:(NSString *)name{

          if(name  !=_name){
[_name release];
_name=[name retain];
}
}
-(NSString*) name{
return name;
}

第三章:便利构造器 自定义初始化 单例
(1)便利构造器:+(id)StudentWithName:(NSString *)n andSex:(NSString *)s andHobby:(NSString *)h andAge:(int)a;//注意到前缀是以类名student开头

(2)自定义初始化:-(id)initWithName:(NSString *)n andSex:(NSString *)s andHobby:(NSString *)h andAge:(int)a;

(3)单例:单例模式就是为了做核心控制,一次只开辟一块内存,这块内存可以反复使用,从而减少对内存的使用。
.h文件中

+(id) instant;//声明单例方法

.m文件中

//定义静态的对象,以形成单例

static Man * gus = nil;

+(id) instant

{

        if (gus == nil) {

            gus = [[Man alloc]init];

        }

    return gus;

}


第四章:OC的内存管理(wwwh)
  (1).为什么要做内存管理 :如果长时间运行,一直创建对象,就会占用大量的内存,从而影响系统的继续运行,有“创建”,就要有“销毁”。

  (2).什么时候要做内存管理:当对一个对象做了alloc,copy和retain等操作后,才拥有它的所有权;当不再需要这个对象时,你应当释放你对它的所有权;不可以对你没有所有权的对象执行释放操作。

  (3).怎样做内存管理:内存管理原理—引用计数,当对对象做了alloc,copy和retain后,引用计数加1,如果要放弃对象的所有权,用release关键字,引用计数减1,autorelease是使对象的引用计数在未来的某个时候减1,并在那时候放弃对象的所有权,而当前引用计数并没有变。对同一个对象所做的copy,alloc,和retain的操作次数应当与release和autorelease操作的次数相等。
   (4).底层管理的思路
NSString* name=@"hello";       ----常量字符串对象,可能后期连续访问,为了不被释放,内存管理为其引用计数为整数最大值,以防止被释放
%d      -1
%ud    整数最大值

第五章:KVC 、KVO、 通知 基本概念 及点路径(多路径)
通知的三步
(1)创建通知
 NSNotification * 实例的通知 = [notificationWithName:( NSString *) aName object:(id) anObject userInfo:( NSDictionary*) userInfo];
(2)注册通知: 获取通知中心对象
 [NSNotificationCenter defaultCenter] addObserver: (监听者,一般是self)selector:(调用的方法:)name:(通知名)object:(一般为nil)];
(3)发送通知
 [[NSNotificationCenter defaultCenter] postNotification:not object:self userInfo:];

KVO、KVC
KVC:"键-值-编码"是一种间接访问对象属性的机制,而不是直接通过调用设置器访问器方法或着(.)语法去访问对象的属性。oc2.0之前我们用KVC来访问,oc2.0之后提供了点语法来访问。
KVO:"键-值-监听"定义了这样一种机制,当对象的属性值发生变化的时候,我们能收到一个通知。
KVC可以用来访问和设置实例变量的值
设置方式:[self setValue:aName forKey:@"name"];
等同于 self.name=aName;
访问方式:aString=[self valueForKey:@"name"];
等同于 aString=self.name;

第六章:类目、延展、协议:
1、私有方法定义:(延展)
oc中私有方法的定义(延展):在.m文件中定义并实现,定义:接口(@interface)后加类目加"()"    实现:在@implementation下实现,在oc中,通过延展的方法实现私有方法的定义

2、代理和协议的关系:
代理和协议,讨论代理和协议的关系,什么是代理,什么是协议,代理和协议如何协同在一起工作:协议就是一套标准,协议只声明了方法,不具体实现,接受协议的对象负责实现,而接受协议的对象就是代理
即本身不做实际的事情,而是要求其他人去做
例如要洗衣服,不是自己去洗,而是让配偶去帮自己洗
配偶就是我们的代理
在OC中以多协议的形式实现类似多继承的目标

OC中没有多继承,是单根继承机制,可以实现类似多继承(协议,代理)
多继承的主要问题:造成继承的混乱

3、@property(assgin,nonatomic)id< >delegate:
问:为何不写retain,解决循环引用,及例子:eg:A的代理是B,B的代理是A,则此时就出现了循环引用,杀死A要先杀死B,而杀死B要先杀A;
4、oc中的多继承:因为多继承可能造成继承混乱;

@property(assign,noneatomic)id < > delegate
为什么不做内存管理(assign)(循环引用)
有可能存在A与B相互为对方的代理

第七章:框架 
NSArray  NSDictionary NSSet
NSArray:查询性的数据,任意对象,通过下标访问
NSDictionary:key访问,以键值对的方式存储数据
NSSet:访问不重复的数据,任意取值,取值不确定,访问时先转换为数组,在用访问数组的方法去访问(通过下标访问)
可变:可以实现添加,删除,修改
不可变:无法添加,删除,修改

1、讨论几种容器的异同:NSArray,NSDictionary,NSSet;
NSArray:对象的有序集合,用索引下标index查询对象;
NSDictionary:对象的键值集合,且key值不允许重复。用键值访问对象;
NSSet:对象的无序集合,且不允许放置重复对象,访问对象可以用anyObject,但取值不定;
(程序的几种原则:)
2、可变的容器;

第八章:文件和网络:
1、沙盒和bundle:
沙盒:iPhone应用程序只能在为该程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒。或(出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上。当应用程序被安装到设备上时,系统会为其创建一个根目录,这个根目录就是应用程序的沙盒)
bundle:是在沙盒文件夹下的一个以工程名命名的.app文件,使用[[NSBundle mainBundle]bundlePath]这个方法获得**.app就是工程bundle,里面的东西就是工程resource里面的东西。包含了程序如图像,声音,编译好的代码,nib文件。

2、get和post的区别:
get请求和post请求为两种网络请求方式,(1)get操作简单,所有参数直接写到地址里面就可以了,post操作相对复杂。需要参数和地址分开写。(2)get方式参数容易被外界看到,安全性不高;post方式安全性比较高,参数放在body里面不容易被捕获。(3)get方式有大小限制,最多长度为255字节,多余的部分会被截掉。post因为参数在body里面,所以无大小限制。

3、同步和异步的区别:
同步异步下载均可以向互联网请求数据,但是同步请求发出后,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作,因此当请求数据较大或者网速不好时,同步就会有UI冻结的现象;
而异步下载则改变了这一个弊端,异步下载并不会阻塞主线程,而会建立一个新的线程来操作,因此用户在发送异步请求后,依然可以对UI进行操作,程序可以继续运行。
有三个关键代理方法,一个连接正确建立,二个是连接接受数据,三个是接受完成;

4、JSON和XML : 能手写解析一个JSON
XML:可扩展标记语言,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。xml提供了统一的方法来描述和交换独立于应用程序或供应商的结构化数据。与html的区别:xml是用来存储数据的,其焦点是数据的内容。而html被设计来显示数据的,其焦点是数据的外观。

  • 语法
    • 使用对称标签描述内容
    • 成对出现 ,每对标签成为一个节点 。如, <Students>和 </Students>就是成对的 
    • 标签区分大小写

  • 用途:
    • 存储数据
    • 网络传输
    • 应用配置

JSON(javaScript Object ):是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。格式:规则: 大括号代表字典,中括号(或小括号)代表数组。冒号左右两边分别为键和值。数据与数据之间用逗号分隔。
例,[{"name":"kallen","age":"26","sex":"男"},{'"name":"alex","age":"24","sex":"男"}]
nsarry *arry = [json jsonvalue];

异步网络请求json机试。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值