IOS学习笔记-概述

这篇博客主要介绍了iOS开发中ARC的适用范围,包括代码块指针、Objective-C对象指针和NSObject类型的指针。同时,详细阐述了桥接转换的三种类型以及对ARC管理对象的限制。此外,还探讨了Cocoa的异常处理机制,包括@try、@catch、@finally和@throw关键字的使用,以及NSException的抛出方式。最后,文章强调了对象的autorelease行为和保留计数器的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每天花30分钟看苹果的官方文档

ARC只对可保留的对象指针(ROPs)有效。可保留的对象指针主要有以下三种:

(1):代码块指针

(2):Objective-C对象指针

(3):通过_attribute_((NSObject))类型定义的指针。


桥接转换(bridge cast)的三种类型:

(1):(_bridge类型)操作符:这种类型的转换会传递指针,但不会传递它的所有权。

(2):(_bridge_retained类型)操作符:使用这种类型,所有权会转移到non-ROP上。

(3):(_bridge_transfer类型)操作符:这种类型转换与上一个相反,它把所有权转交给ROP。


不能对ARC管理的对象调用的管理方法

retain,retainCount,release,autorelease,dealloc。

不能对ARC对象进行重写的方法

retain,retainCount,release,autorelease。


Cocoa要求所有的异常必须是NSException类型的异常。

异常的所有关键字都是以@开头的,以下是它们的各自作用:

(1)@try:定义用来测试的代码块以决定是否要抛出异常。

(2)@catch():定义用来处理已抛出异常的代码块。接收一个参数,通常是NSException类型,但也有可能是其他类                             型。

(3)@finally:定义无论是否有抛出异常都会执行的代码块,这段代码总是会执行的。

(4)@throw:抛出异常。

程序会创建一个NSException实例来抛出异常,并会使用以下两种技术之一:

(1):使用“@throw异常名;”来抛出异常;

(2):向某个NSException对象发送raise消息。

@finally是在@throw发生之前调用的。OC的异常机制与C++的异常机制兼容。


当对象接受到一条autorelease消息时,其保留计数器的值并不会发生改变。该对象只是被放入了NSAutoreleasePool当中。Cocoa有三个关于对象及其保留计数器的规则

(1):如果使用new、alloc或copy操作获得了一个对象,则该对象的保留计数器的值为1。

(2):如果通过其他方法获得一个对象,则假设该对象的保留计数器的值为1,而且已经被设置为自动释放。

(3):如果保留了某对象,则必须保持retain方法和release方法的使用次数相等。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值