黑马程序员_object c学习日记⑤_ARC、强指针、block、协议
来源:互联网 发布:域名注册成功如何备案 编辑:程序博客网 时间:2024/06/05 03:50
-------------------------------------- android培训、java培训、ios培训期待与您交流! ---------------------------------
ARC判断准则:只要没有强指针指向对象,就会释放对象
1、 ARC特点:
1> 不允许调用release、retain、retaincount
2> 允许重写dealloc,但是不允许调用[super dealloc]
3> @property的参数
l strong:成员变量是强指针(适用于oc对象类型)
l weak:成员变量是弱指针(适用于oc对象类型)
l assign:适用于非oc对象类型
指针分2钟:
1> 强指针:默认情况下,所有指针都是强指针__strong
2> 弱指针:__weak
ARC情况下:当两端循环引用的时候,解决方案:1端用strong,另1端用weak
block用来保存一段代码;block的标志:^;
block跟函数很像:1可以保存代码;2有返回值3有形参4调用方式一样
block内部可以访问外面的变量;默认情况下,block内部不能修改外面的局部变量;给局部变量加上__block关键字,这个局部变量就可以在block内部修改;
void (^myBlock)() = ^{
NSLog(@”----------------”);
};
int (^sumBlock)(int, int) = ^(int a, intb){
return a + b;
};
typedef int (^MyBlock)(int, int);
协议用途:用来声明一大堆方法;只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明;只要父类遵守了某个协议,就相当于子类也遵守了
@protocol 协议名称 <NSObject>
// 方法声明列表……
@end
// 遵守协议
@interface 子类:父类 <协议1, 协议2>
@end
@protocol 协议名称 <其他协议1, 其他协议2>
@end
// @required 要求实现,不实现就会发出警告
//@optional 不要求实现
一个协议遵守了另外一个协议,就可以拥有这份协议中的所有方法声明
基协议NSObject
// 定义一个变量的时候,限制这个变量保存的对象遵守某个协议
类名<协议名称> *变量名;
//要求obj3保存的对象必须是遵守MyProtocol这个协议
NSObject<MyProtocol> *obj3;
@property中声明的属性也可用做一个遵守协议的限制
@property (nonatomic, strong) 类名<协议名称> *属性名;
协议可用定义在单独.h文件中,也可用定义在某个类中
如果这个协议只用在某个类中,应该把协议定义在该类中;如果这个协议用在很多类中,就应该定义在单独文件中
协议的提前声明:@protocol 协议名称;
-------------------------------------- android培训、java培训、ios培训期待与您交流! ---------------------------------
- 黑马程序员_object c学习日记⑤_ARC、强指针、block、协议
- 黑马程序员_object c学习日记_c语言部分
- 黑马程序员_object c学习日记_复习Foundation
- 黑马程序员_arc编译特性和block数据类型,protocol协议
- 黑马程序员_object c学习日记⑥_Foundation框架:结构体、集合类、NSString、日期类
- 黑马程序员--IOS_学习笔记_ARC
- 黑马程序员_object c学习日记①_类的声明定义、点语法及成员变量作用域
- 黑马程序员_object c学习日记②_@property和@synthesize、构造方法、分类及类对象
- 黑马程序员_object c学习日记③_SEL数据、内存管理一:引用计数器、retain、release、dealloc等
- 黑马程序员_object c学习日记④_内存管理二:@property参数强化、@class及autorelease
- 黑马程序员_ARC
- 黑马程序员:OC学习日记之block
- 黑马程序员_Object类
- 黑马程序员_Object
- 黑马程序员-iOS学习日记(九)Block&Protocol
- 黑马程序员-OC学习日记六之Block小结
- 黑马程序员---block学习日记
- 黑马程序员--Objective-C Block学习
- 第四周作业--图的表示
- oracle生成guid全球唯ID
- hdu 2501 dp
- WinRAR 5.01 正式版 (简体中文)附注册机及注册码
- css hack
- 黑马程序员_object c学习日记⑤_ARC、强指针、block、协议
- oracle drop table的用法
- xml处理
- JSP 标签 tag
- 【Bug笔记】关于Js的返回事件和Java中NoSuchMethodException
- C++数据成员
- 动态规划0—1背包问题
- ACM比大小
- 一个五位数,ABCDE*4=EDCBA,求出这样的五位数。