当Block从栈复制到堆上,那么对__block变量又是如何处理的呢?
使用__block变量的Block从栈复制到堆上时,__block变量也会受到影响。
若在1个Block中使用__block变量,则当该Block从栈复制到堆上时,使用的所有__block变量也必定配置在栈上。这些__block变量也全部被从栈复制到堆上。此时,Block持有__block变量。
在多个Block中使用__block变量时,任何一个Block从栈复制到堆时,__block变量也会一并从栈复制到堆并被该Block所持有。当剩下的Block从栈复制到堆时,被复制的Block持有__block变量,并增加__block变量的引用计数
如果配置在堆上的Block被遗弃,那么它使用的Block变量也将被释放。
当Block从栈复制到堆上,那么对__block变量又是如何处理的呢?
使用__block变量的Block从栈复制到堆上时,__block变量也会受到影响。
若在1个Block中使用__block变量,则当该Block从栈复制到堆上时,使用的所有__block变量也必定配置在栈上。这些__block变量也全部被从栈复制到堆上。此时,Block持有__block变量。
在多个Block中使用__block变量时,任何一个Block从栈复制到堆时,__block变量也会一并从栈复制到堆并被该Block所持有。当剩下的Block从栈复制到堆时,被复制的Block持有__block变量,并增加__block变量的引用计数
如果配置在堆上的Block被遗弃,那么它使用的Block变量也将被释放。
当Block从栈复制到堆上,那么对__block变量又是如何处理的呢?
使用__block变量的Block从栈复制到堆上时,__block变量也会受到影响。
若在1个Block中使用__block变量,则当该Block从栈复制到堆上时,使用的所有__block变量也必定配置在栈上。这些__block变量也全部被从栈复制到堆上。此时,Block持有__block变量。
在多个Block中使用__block变量时,任何一个Block从栈复制到堆时,__block变量也会一并从栈复制到堆并被该Block所持有。当剩下的Block从栈复制到堆时,被复制的Block持有__block变量,并增加__block变量的引用计数
如果配置在堆上的Block被遗弃,那么它使用的Block变量也将被释放。
当Block从栈复制到堆上,那么对__block变量又是如何处理的呢?
使用__block变量的Block从栈复制到堆上时,__block变量也会受到影响。
若在1个Block中使用__block变量,则当该Block从栈复制到堆上时,使用的所有__block变量也必定配置在栈上。这些__block变量也全部被从栈复制到堆上。此时,Block持有__block变量。
在多个Block中使用__block变量时,任何一个Block从栈复制到堆时,__block变量也会一并从栈复制到堆并被该Block所持有。当剩下的Block从栈复制到堆时,被复制的Block持有__block变量,并增加__block变量的引用计数
如果配置在堆上的Block被遗弃,那么它使用的Block变量也将被释放。
通过该功能,无论在Block语法中,Block语法外使用__block变量,还是变量配置栈上或者堆上,都可以顺利地访问同一个__block变量。