objective-c – 块有SELF指针吗?

objective-c – 块有SELF指针吗?,第1张

概述我想从内部递归地调用一个块。在一个obj-c对象中,我们可以使用“self”,有没有这样的内部引用一个块实例呢? 有趣的故事!块实际上是Objective-C对象。也就是说,没有暴露的API来获取块的自指针。 但是,如果在使用它们之前声明块,则可以递归使用它们。在非垃圾收集环境中,您可以执行以下 *** 作: __weak __block int (^block_self)(int);int (^fib 我想从内部递归地调用一个块。在一个obj-c对象中,我们可以使用“self”,有没有这样的内部引用一个块实例呢?解决方法@H_301_10@ 有趣的故事!块实际上是Objective-C对象。也就是说,没有暴露的API来获取块的自指针。

但是,如果在使用它们之前声明块,则可以递归使用它们。在非垃圾收集环境中,您可以执行以下 *** 作:

__weak __block int (^block_self)(int);int (^fibonacci)(int) = [^(int n) {    if (n < 2) { return 1; }    return block_self(n - 1) + block_self(n - 2);} copy];block_self = fibonacci;

有必要将__block修饰符应用于block_self,否则,在分配之前,fibonacci中的block_self引用将引用它(在第一次递归调用时崩溃您的程序)。 __weak是确保块不捕获对自身的强引用,这将导致内存泄漏。

总结

以上是内存溢出为你收集整理的objective-c – 块有SELF指针吗?全部内容,希望文章能够帮你解决objective-c – 块有SELF指针吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1038088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存