HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 引用块内的实例变量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个类(非ARC环境):
@interface SomeObject : NSObject {
    UILabel *someLabel;
    dispatch_queue_t queue;
}
- (void)doAsyncStuff;
- (void)doAnimation;
@end

@implementation SomeObject

- (id)init {
    self = [super init];
    if (self) {
        someLabel = [[UILabel alloc] init];
        someLabel.text = @"Just inited";
        queue = dispatch_queue_create("com.me.myqueue",DISPATCH_QUEUE_SERIAL);
    }
    return self;
}

- (void)doAsyncStuff {
    dispatch_async(queue,^{
        ...
        // Do some stuff on the current thread,might take a while
        ...
        dispatch_async(dispatch_get_main_queue(),^{
            someLabel.text = [text stringByAppendingString:@" in block"];
            [self doAnimation];
        }
    }
}

- (void)doAnimation {
    ...
    // Does some animation in the UI
    ...
}

- (void)dealloc {
    if (queue) {
        dispatch_release(queue);
    }
    [someLabel release];
    [super dealloc];
}

如果我的块被启动,然后其他所有持有对该对象实例的引用的东西都会释放它,我保证不会调用dealloc,因为嵌套块引用了一个实例变量(和自己) – dealloc嵌套块退出后会发生什么?我的理解是我的街区有很强的自我参考,所以这应该是犹太人.

解决方法

这很好,因为你说的原因.

需要注意的重要一点是,如果类(由self表示)以任何方式保留块,您将创建一个保留周期.因为你是在线定义它,并将它传递给dispatch_async,你应该没问题.

大佬总结

以上是大佬教程为你收集整理的ios – 引用块内的实例变量全部内容,希望文章能够帮你解决ios – 引用块内的实例变量所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: