calayer - 为 NSView 删除 CAMetalLayer
问题描述
我有一个NSView
由图层支持的自定义类。我CAMetalLayer
为此制作了一个NSView
在makeBackingLayer
.
在makeBackingLayer
我创建一个图层CAMetalLayer *backingLayer = [CAMetalLayer layer];
并根据我的需要设置属性。
我的问题是,我是否需要dealloc
在破坏时明确地使用这一层NSView
?我没有在覆盖的函数中创建这个层,我有责任删除它还是 NSView 会处理它?
我没有看到任何有关此的文档。此外,我看到的所有示例都没有提到在任何地方删除图层。
谢谢
解决方案
您可能不需要手动释放图层。假设您的程序启用了 ARC(自动引用计数),您NSView
应该在销毁时自动释放CALayer
设置为其属性的任何内容。.layer
如果您不确定 ARC 是否启用,您可以转到 Xcode 项目中的 Build Settings 并搜索 Automatic Reference Counting。几年来,新的 Xcode 项目默认启用它。
注意:只有当它是唯一持有对它的引用的对象时,您NSView
才能释放您的图层。如果您的程序中的其他对象持有对您的 的引用CAMetalLayer
,则您的图层将不会被释放,直到它们删除它们的引用。
推荐阅读
- javascript - 在 rxjs 中选择重复列表的最后一项
- python-3.x - Zabbix API 3.4 - 由于循环要求而无法创建主机
- bash - 子shell进程无法访问父shell中定义的变量和函数
- ember.js - 如何在使用 Ember.set 设置之前修剪数据
- javascript - Firebase storage.object().onChange 现在已弃用,
- runtime-error - 如何在 Perl 中导致“无法刷新标准输出:管道损坏”?
- javascript - 尝试添加自定义 Flaticon 图标
- javascript - 不敏感的事件计数器 - JS
- flutter - Flutter 使用继承的小部件和 Navigator 返回 NoSuchMethodError
- python - (最简单)在同一台计算机上使用 Python 3.6 和 3.7 的方法?