ARC 可以与 Core Graphics 对象一起使用吗?

2024-05-21

我最近开始了一个使用自动引用计数(ARC)的新项目。
当我分配 CALayer 的内容时:

UIView* view = ...
UIImage* image = ...
view.layer.contents = image.CGImage

我收到一个错误

ARC 不允许将非 Objective-C 指针类型“CGImageRef”隐式转换为“id”

只需铸造CGImageRef to id隐藏了错误,但我想知道 ARC 是否仍然可以正常工作?


您确实应该查看 WWDC 2011 的 ARC 视频。它们可以在开发者网站上找到并通过 iTunes 打开。尤其:

• 会议 323 – 介绍自动引用计数

• 会议 322 – Objective-C 的深入进展

另外,ARC 参考注释:

https://developer.apple.com/library/content/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html https://developer.apple.com/library/content/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

参考笔记和视频都讨论了 Core Graphics(等)以及它们如何与 ARC 配合使用。

具体来说,请查看名为“管理免费桥接”

在许多 Cocoa 应用程序中,您需要使用 Core Foundation 风格的对象,无论是来自 Core Foundation 框架本身(例如 CFArrayRef 或 CFMutableDictionaryRef)或来自采用的框架 核心基础约定,例如核心图形(您可以使用类型 如 CGColorSpaceRef 和 CGGradientRef)。

编译器不会自动管理 Core 的生命周期 基础物体;您必须调用 CFRetain 和 CFRelease (或 相应的特定类型变体)由核心规定 基础内存管理规则(参见内存管理编程 核心基础指南)。

如果您在 Objective-C 和 Core Foundation 风格的对象之间进行转换,您 需要告诉编译器该对象的所有权语义 使用强制转换(在 objc/runtime.h 中定义)或 Core 基础风格宏(在 NSObject.h 中定义):[...]

Jörg Jacobsen 对桥接选项也有很好的总结概述:在 ARC 环境中管理免费桥接 http://www.joergjacobsen.com/blog/2011/10/05/managing-toll-free-bridging-in-an-arced-environment/.

__bridge_retained(注意:仅在从对象指针转换为 C 类型指针时使用它):我(程序员)需要引用该对象 在 C 类型指针的黑暗世界中有一段时间,这是不透明的 你,ARC。所以请不要在我还在的时候释放这个对象 需要它。我(程序员)保证自己发布(在黑暗中) 世界)当我完成它时

__bridge_transfer(注意:仅在从 C 类型指针转换为对象指针时使用它):我(程序员)将其交给你,ARC,一个 我拥有的、我在黑暗中不再感兴趣的物体 C 类型指针的世界对你来说是不透明的。每当你,ARC, 完成该对象后请自行释放它,因为您知道 正确的时间,从而节省我一些工作,而不必自己做。

__bridge:ARC,你一直在平衡你的保留和释放,就像我在 C 类型指针的黑暗世界中不断平衡我的一样。 是…。每当我需要在黑暗世界中抓住一个物体时,我就会 我自己保留它并在适当的时候释放它。我不需要任何 与你签订额外合同,ARC。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARC 可以与 Core Graphics 对象一起使用吗? 的相关文章

  • UITableViewCell 的 viewDidAppear

    我通常使用viewDidAppear方法在视图完成出现后在视图上执行一些 UI 操作 我在各种情况下使用了此方法 它非常有用 但是 我需要在视图上进行一些 UI 更改UITableViewCell当它完成出现后 SDK中是否有任何可用的方法
  • ios 使用 HTTP POST 上传图像和文本

    谢谢阅读 我是 iOS 新手 我正在尝试使用上传图像和文本multi part form encoding在 iOS 中 The curl等价的是这样的 curl F param1 value1 F email protected cdn
  • 如何获取核心数据中现有实体(表)的列表

    如何获取核心数据中特定模式 托管对象模型 的现有实体 表 列表 我刚刚开始实施核心数据概念并坚持这些要点 就像是 SELECT COUNT FROM information schema tables WHERE table schema
  • 从视频生成缩略图 - ios7

    我用这个作为参考 从视频 URL 或 iPhone SDK 中的数据获取缩略图 https stackoverflow com a 6027285 1145339 该方法使用 MPMoviePlayerController 类而不是 AVF
  • 什么是已弃用的推送转场? (iOS 8)[重复]

    这个问题在这里已经有答案了 我不知道在这种情况下已弃用意味着什么 我是编程新手 正在 Xcode 6 中制作我的前几个应用程序 今天我正在制作一个待办事项列表应用程序 当连接到用户可以输入新待办事项以添加到主表的场景时 我被邀请使用推送转场
  • 您有什么方法可以从相机胶卷转到新的视图控制器吗?

    我正在尝试从相机胶卷转到新的视图控制器 所以基本上我希望能够选择一张图片 并且在选择图片后 它将显示在新视图控制器上的 imageView 上 那个很难做吗 void imagePickerController UIImagePickerC
  • iOS 自定义滑块删除两端的最小和最大空间

    我正在尝试使用自定义滑块 class MySlider UISlider override func trackRect forBounds bounds CGRect gt CGRect let customBounds CGRect o
  • Flutter - 选择 TextFormField 时键盘不显示

    我目前遇到一个问题 当我选择任何一个时 键盘不会出现TextFormFielda 内的小部件Form小部件 这是表单的代码 位于我的内部CreateAccountForm有状态的小部件 import package flutter mate
  • UILocalNotification 在后台 10 分钟后不提示

    In didFinishLaunchingWithOptions调用函数的定时器循环httpRequest每 1 分钟间隔一次 BOOL application UIApplication application didFinishLaun
  • Swift 3:如何访问48字节CFData中matrix_float3x3的值?

    我正在尝试访问内在矩阵answer https stackoverflow com a 48159895 9296667 通过运行下面的命令 我能够得到一个 48 字节的任意对象 https developer apple com docu
  • 如果您使用 CocoaPods,您的 .gitignore 中会包含什么内容?

    我从事 iOS 开发已经几个月了 刚刚了解到有前途的可可豆荚 http cocoapods org 用于依赖管理的库 我在个人项目上尝试过 添加了依赖项Kiwi https github com allending Kiwi到我的 Podf
  • NSCFData isRessized 崩溃?

    我目前在控制台中收到此崩溃日志 2011 08 23 19 18 40 064 App 1697 707 NSCFData isResizable unrecognized selector sent to instance 0x11f1c
  • 是否可以扩展现有的 Objective-C 块?

    我有一个使用标头中定义的块的类 如下所示 property readwrite copy RequestSucceededBlock succeededBlock 该物业succeededBlock已经设置了一个块 有没有办法用另一个仍然调
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • 无法从 iOS 中的框架访问 .nib(XIB) 文件

    我已经从现有的代码库中创建了一个框架 并尝试在新的代码库中使用它 这很好用 但是当我尝试访问属于我的框架包的一部分的 nib 文件时 我的应用程序崩溃了 这是我用来访问视图控制器 XIB 文件的代码 testViewController c
  • UITableView:显示 tableFooterView 时运行代码?

    我正在使用 UIView表页脚视图 http developer apple com library ios documentation uikit reference UITableView Class Reference Referen
  • 如何将图像放入此 UIPickerView 中?

    我不知道如何创建一个在文本一侧带有图像的自定义 UIPickerView 我一直在寻找一种方法 我刚刚发现了这个 UIView pickerView UIPickerView pickerView viewForRow NSInteger
  • 如何正确创建迦太基 cartfile?

    我正在研究购物车文件 迫不及待地想 简单地创建一个购物车文件 就像所有说明所说的那样 只是 如何 简单地 创建一个 Cartfile 我创建了一个纯文本文档 将其命名为 cartfile 并在其中复制了一些依赖项 Ran carthage
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc
  • Cordova 2.4.0 或 2.5.0 或 2.6.0 和 requirejs

    Cordova 2 4 0 及更高版本支持 AMD 加载到 javascript 中 我特别希望将 Cordova 2 5 0 与最新版本的 RequireJS backbone jquery jquery mobile 一起使用 我还没有

随机推荐

  • 打印一个模式以显示最多 5 行 5 列的数字,例如 5 4 3 2 1 和下一行 4 3 2 1 5 直到第 5 行

    这是一个正方形图案 每行有 5 列 共有 5 行 图案如下所示 5 4 3 2 1 4 3 2 1 5 3 2 1 5 4 2 1 5 4 3 1 5 4 3 2 我的代码如下以获得模式 但当计数器达到 1 并显示在相应的列值中时 我无法重
  • 具有可变数量过滤器参数的 Django 查询

    我有一个 Django 查询 从MyModel基于某些条件 if beta MyModel object filter x alpha y beta else MyModel object filter x alpha 是否可以消除if b
  • python-social-auth 部分管道无法恢复

    我正在尝试使用 python social auth 的部分管道收集新用户的密码 由于某种未知的原因 我无法恢复管道 提交表单后页面呈现回密码收集页面 值得注意的是 即使我输入 http complete backend name 页面也会
  • 为什么 SORT_REGULAR 在 PHP 中产生不一致的结果?

    我正在开发一个类 它使 PHP 中的数组排序变得更容易 并且我一直在使用 SORT 常量 但是行为或SORT REGULAR 默认排序类型 似乎有所不同 具体取决于您在数组中添加项目的顺序 此外 我找不到任何模式来解释为什么会出现这种情况
  • NSMutableArray addObject: -[__NSArrayI addObject:]: 无法识别的选择器发送到实例

    我尝试从周日开始以 100 种方式初始化 NSMutableArray 但没有任何效果 我尝试将其设置为等于新分配和初始化的 NSMutableArray 只需分配并自行初始化变量 我能想到的每种组合都总是相同的结果 这是代码 Object
  • MATLAB 变量传递和惰性赋值

    我知道在 Matlab 中 当将新变量分配给现有变量时 会进行 惰性 评估 例如 array1 ones 1 1e8 array2 array1 的价值array1不会被复制到array2除非元素array2被修改 由此我推测Matlab中
  • 在 Django 中使用 Dajaxice 刷新表格

    我正在监测不同地点的温度 我将数据存储在模型中并设置了views py 但我想每 5 分钟刷新一次表 我是 ajax 和 dajaxice 的新手 如何编写该函数以使其显示在 html 中 这是我的观点 py def temperature
  • 增强 XML 解析复杂性 - c# XML 循环

    我正在编写自己的 C 自定义地图导航程序 我在用打开街道地图用于地图数据 它是一个包含节点和方法的大型 XML 文件 我编写了一个转换器 可以从 XML 文件中去除无用的垃圾 如时间戳 用户等 这样文件就会变得更小 现在 当我尝试循环 XM
  • GWT/JAVA 未捕获的异常转义

    我的代码有问题 但似乎无法修复它 我想在提交按钮时将一些客户数据添加到 java GWT 中的数组列表中 我从中添加数据的表单 ok addClickHandler new ClickHandler public void onClick
  • 单个控制器站点的 ASP.NET MVC 路由

    我正在尝试创建一个简单的网站 基本上它有一个控制器Home控制器 该控制器有一个动作Index需要一个string作为参数 这是一个目录 并使用该 目录 来完成其工作 我不知道如何创建一个通用的捕获所有路由 将每个 URL 发送到此一个操作
  • Java 递归和性能

    递归对处理器和内存的影响是否很大 我的意思是 我的一个线程有一个方法 很可能会调用自身 假设它每秒可以自调用一次 我的应用程序应该运行至少 24 小时而不停止 因此它提供了 60 60 24 86400 个自调用方法 它对第二个 主 线程有
  • 如何在 Javascript 中基于嵌套值过滤数组

    我有一个数组 我试图根据某个嵌套值进行过滤 而不获取任何其他元素 const arrayData country Country X games gameTitle Game1 players name John status Active
  • 如何更改chart.js中的标签颜色?

    我有一个像这样定义的饼图 var myChart new Chart ctx type doughnut data labels data labels datasets data data values backgroundColor r
  • Python 中使用 Pygments 的分词器

    想要在 Python 中为源文件 例如 Java 或 C 创建标记器 遇到了Pygments http pygments org 特别是这些lexers http pygments org docs lexers lexers for c
  • Firebase 可以在两个引用上进行事务吗?

    Firebase 为其中的事务提供了以下示例guide https firebase google com docs database web read and write save data as transactions functio
  • 如何使用 Docker 访问输出文件

    我正在编写一个 C 程序 并想在其上使用 Docker 这Dockerfile看起来像下面这样 FROM gcc 7 2 0 ENV MYP repo WORKDIR MYP COPY MYP RUN bin sh c make ENTRY
  • $_REQUEST、$_GET、$_POST 哪一个最快?

    这些代码中哪一个会更快 temp REQUEST s or if isset GET s temp GET s else temp POST s REQUEST http php net manual en reserved variabl
  • 如何使用Emacs运行方案?

    我跟着这个tutorial http jeffcjensen net scheme 并成功安装了Emacs STk Quack 问题是我怎样才能像在 Racket 中那样加载我的程序 在 Racket 中 我可以在上方窗口中编辑代码 输入一
  • 套接字接收全部

    我正在尝试在 C 中捕获 ip 数据包 一切工作正常 除了我只收到传出的数据包 My Code using Socket sock new Socket AddressFamily InterNetwork SocketType Raw P
  • ARC 可以与 Core Graphics 对象一起使用吗?

    我最近开始了一个使用自动引用计数 ARC 的新项目 当我分配 CALayer 的内容时 UIView view UIImage image view layer contents image CGImage 我收到一个错误 ARC 不允许将