美文网首页
OC总结(二)

OC总结(二)

作者: 李毅然 | 来源:发表于2016-07-16 15:20 被阅读0次

一.内存问题
(1).内存溢出
(2).野指针(过度释放)
二.内存管理方式:

(1)MRC:手动管理引用计数.对对象完成后需要release.
Man * man = [[Man alloc]init];
[man release];

// 集合类型
(i). addObject 会使引用计数 + 1
(ii).removeObject 会使引用计数 - 1

(2).ARC:自动管理引用计数(常用.基于MRC)

(i).strong (ARC,强引用) 会使引用计数 + 1
(ii).weak (应用于对象类型(NSObject子类),弱引用,对象被释放时,会自动置空)
(iii).retain(MRC,强引用)会使引用计数 + 1
(iv).copy(拷贝)原来引用计数不变,新生成的 + 1
(v).assign(用户与简单的数据类型,不会产生引用计数)
三.引用计数
(1).alloc,copy,retain 会使引用计数 + 1
(2).release,autorelease 会使引用计数 - 1
(3)当引用计数 = 0 时,会调用dealloc方法 引用计数不变(为1)
四.实现对对象的拷贝
(1).需要签订NSCoping协议
(2).需要实现copyWithZone方法

Man * newMan = [man copy];
NSLog(@"newMan : %@ - oldMan : %@",newMan,man);

五.KVC(NSObject) Key-Value-Coding键值编码,间接访问成员变量的方式
六.只要是NSObject的子类,就包含以下方法
(1)valueForKey
(2) valueForKeyPath
(3) setValue: forKeyPath:
七.在工程下使用文件
// 加在Build Phases下的编译source下
(1).如果在ARC工程下使用MRC的文件
-fno-objc-arc
(2). 在MRC的工程下使用ARC的文件
-fobjc-arc
三.类的扩展方式
(1).category(类目)
创建:

屏幕快照 2016-07-16 下午2.55.05.png
屏幕快照 2016-07-16 下午2.55.59.png

(i).通过Objective-C File创建
(ii).会产生两个文件 .h .m
(iii).文件名会以 类名+Category名
使用:
(i). 向对应文件中添加需要添加方法
(ii). 引入到你对应要使用的位置
(2).extends(延展)
延展,一般定义在.m中,其中声明一些私有的属性/方法
(3).delegate(代理)
在之前简书上已整理
(4).继承
四.iOS9的新特性
(1).nonnull 修饰的属性,对应setter和getter方法
(2).nullable 修饰的属性,对应setter和getter方法
(3).null_resetable
五.泛型(带泛型的容器(规定了容器中所存储的类型))
(1).泛型数组

 NSMutableArray<NSString *> * array = [NSMutableArray arrayWithObjects:@"123", nil];

(2).泛型字典

NSMutableDictionary<NSString *,NSString *> * dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"小花儿",@"name", nil];

(3).自定义泛型

Truck<Pserson *> * truck = [[Truck alloc]init];

Truck.h

// 自定义泛型声明方式
//@interface 类名<泛型名>: 父类
// 自定义泛型,声明后,泛型名,可以应用在属性,方法中
// 泛型名 等效于 类型修饰(例: NSString *)
@interface Truck<__covariant objectType> : NSObject

六.协变性,逆变性
(1). __covariant 协变性 子类在给父类赋值时,自动强转

//Truck<NSArray*> Truck<NSMutableArray*>
  truck1 = truck2;

(2).__contravariant 逆变性 父类给子类赋值,自动强转(暂时不知道应用何处)

    truck2 = truck1;

七.__kindOf
加__kindof修饰后,返回的类型及其子类型,都可以接收这个返回值

 Truck * truckKindOf = [[Truck alloc]init];
NSMutableArray * arr = [truckKindOf returnArray];

Truck.h

-(__kindof NSArray *)returnArray;

Truck.m

// 方法的返回值,是一个不可变数组/可变数组
-(__kindof NSArray *)returnArray{
//    return @[];
return [NSMutableArray array];
}

相关文章

  • iOS底层原理总结-- KVO/KVC的本质

    iOS底层原理总结--OC对象的本质(一) - 掘金 iOS底层原理总结--OC对象的本质(二) - 掘金 iOS...

  • OC总结(二)

    一.内存问题(1).内存溢出(2).野指针(过度释放)二.内存管理方式: (1)MRC:手动管理引用计数.对对象完...

  • 十五、Block之(七)Block的__block(修饰OC对象

    一、强指针引用的block,内部引用OC对象的局部变量(oc对象的变量)。 二、总结。

  • OC 和Swift 互相调用

    一、OC调用swift文件 二、swift调用OC文件 三、注意和总结 添加: 四、自定义桥接文件 一、OC调用s...

  • iOS与JS(一):使用URL拦截的方式进行JS与OC互相调用

    参考:iOS下JS与OC互相调用(二)--WKWebView 拦截URLiOS下JS与原生OC互相调用(总结) 关...

  • OC知识总结二

    前两天发了一篇总结一,虽然这些都学过 ,可是现在有点想不起来了,所以现在回顾一下。 因为图片有点大,所以给放小了,...

  • OC-基础总结(二)

    OC基础总结 重新回过头看这些基础知识,对许多知识点都有新的认识,拥有坚实的基础才能更快的成长。 OC内存管理 -...

  • OC引入Swift,混编

    一、OC中引入Swift 最近在研究swift时候,需要实现OC与Swift混编,因此总结了以下几个步骤实现OC中...

  • oc总结

    #import 就相当于 #include,但是是#include的升级版, #import能防止重复包含@cla...

  • oc总结

    一、类和对象 1.类是具有相同特征和行为的事物的抽象,对象是类的具体化,类是对象的类型。 2.类和对象是面向对象编...

网友评论

      本文标题:OC总结(二)

      本文链接:https://www.haomeiwen.com/subject/sblujttx.html