实例变量问题上的objective-c – __block属性.
发布时间:2020-12-16 10:31:27 所属栏目:百科 来源:网络整理
导读:编译Objective-C类时遇到以下错误: VideoView.h:7: error: __block attribute can be specified on variables only 这里也是头文件的重要部分: #import UIKit/UIKit.h#import AVFoundation/AVFoundation.h@interface VideoView :UIView{@private __block A
编译Objective-C类时遇到以下错误:
VideoView.h:7: error: __block attribute can be specified on variables only 这里也是头文件的重要部分: #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @interface VideoView :UIView{ @private __block AVPlayer *player; } ... 有没有解释为什么g认为我在非变量对象上应用__block属性? 解决方法
您不能在实例变量上使用__block,因为它完全没有必要.
即,当你这样做时: ^{ someIvar = ....; }(); 该块正在捕获对self的不可变的,保留的引用,并通过它间接引用iVar,因此__block不执行任何操作,因为该变量既不是const复制也不是readonly. 顺便说一下,这也是为什么在ARC下使用iVar时最终会出现“循环引用”警告的原因. 注意:在定义块语法时,我们试图想出一种表示这一点微妙的语法,但决定除非明显(没有),否则改进ARC环境和/或LLVM的内存管理分析静态分析仪使它不必要. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |