《Objective-C程序设计(第四版)》读书笔记(三)

本文介绍C语言的一种扩展特性——块(Block),并探讨其与Java匿名内部类的相似之处,以及如何利用块实现多线程操作。此外,文章还深入解析了Objective-C中的isa指针作用,揭示其如何在运行时传递类信息。
    6. 块 (Blocks) (p268)

    作为C语言的扩展,块其实是由苹果公司添加到语言中的。这个看起来像函数的东西,定义在函数或者方法的内部,并且能够访问在函数或者方法范围内块之外的任何变量。其实,这个东西在一些方面有点像Java里的匿名内部类。块的优势在于能够让系统分配给其他处理器或应用的其他线程执行。
    使用块有一点注意的是,如果块的内部有一些变量,在定义块的时候就已经具有值的话不能在块外部再次修改值了。如果试图在块内部修改值也不可以,编译器会报错:给只读(readonly)变量赋值。

    7.isa (p306)

    实例变量存储在结构中,使用alloc消息分配新对象中,系统会在内存中预留足够的空间来存储这些结构,成员中有一个名为isa的保护成员,会在运行时把该实例的类信息传递给系统,这就是为什么我们返回通用类型指针(id)后给它发送类特有的消息时,还能正常运行的原因。在另一本大牛Joe Conway的书里提到"isa"这个名字是抽象自"is a",表达它是个什么的意思。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值