IOS开发 为什么要用block

IOS开发 为什么要用block,利用block主要用途是代替delegate吗
2025-03-10 09:40:08
推荐回答(2个)
回答1:

我认为block主要是替代selector。对于一个包含少量代码的方法可以放到一个block中而不用重新定义个方法,增加代码的可读性。
比如通知中心(NSNotificationCenter)事件的回调(addObserver)可以指定一个函数,也可以直接用block,(@selector或者usingBlock^),如果只要执行简单的几句代码,就可使用后者,省去新定义一个方法的麻烦。
不过使用block时需要注意一些问题,尤其引用计数的问题会导致一些东西不能正常释放,具体需要多看些资料。
跟delegate没什么关系。

回答2:

Block相当于Objective-C的匿名函数,Block允许开发者在两个对象之间将任意的语句当做数据进行传递,往往这要比引用定义在别处的函数直观。另外,block的实现具有封闭性(closure),而又能够很容易获取上下文的相关状态信息,因此ios开发中会用到block。
实际上,block使用了与函数相同的机制,可以像声明函数一样,来声明一个bock变量;可以利用定义一个函数的方法来定义一个block;也可以将block当做一个函数来调用。