- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
正如我所假设的,这对于 ARC 下的不可变对象(immutable对象)应该没问题:
- (id) copyWithZone:(NSZone *)zone {
return self;
}
但是如果我需要深拷贝,我应该这样写:
- (id) copyWithZone:(NSZone *)zone {
Immutable *copy = [[Immutable alloc] initWithStr:str];
return copy;
}
因此,如果我假设正确,ARC 将理解情况 (1) 和 (2) 并做出关于“+1”的正确决定以供引用。
我说得对吗?
最佳答案
看来我是对的:我找不到关于该主题的任何具体文档,但我创建了单独的测试项目并关闭了 ARC,然后选择迁移到 ARC。这是没有 ARC 的代码:
- (id) copyWithZone:(NSZone *)zone {
return [self retain];
}
这是我迁移后得到的:
- (id) copyWithZone:(NSZone *)zone {
return self;
}
有时 ARC 的工作方式很神奇,但似乎我们应该相信它会很好地完成工作。 :-)
关于Objective-C 不可变对象(immutable对象) copyWithZone : ARC-compatible realization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127198/
“所有浏览器兼容”和“跨浏览器兼容”有什么区别? “交叉”是什么意思,是指不同的操作系统吗? 如果任何网站在 IE 7、8 FF 3+、Safari 3+ 的桌面版本上运行良好,我们可以说它是跨浏
我们目前正在维护一个基于 ASP.Net 3.5、MS Enterprise Lib 4.1 和 Telerik ASP.Net AJAX 2010 的企业应用程序。该应用程序由 2 个不同的部分组成
我有一个基于 Ant 的构建系统,我想我可以编写一个 python 脚本来测试目录层次结构中的所有已编译/jarred 类,以避免在编译时与运行时使用不同版本时可能出现的问题。 脚本最初检查了在各种
对于纯 C 共享库,是否有可能在 API 兼容性未被破坏的情况下破坏 ABI 兼容性? 此外,如果编写一个库 A,它提供现有库 B 的所有 API 函数,以及一些额外的 API 函数,那么库 A AB
我可以看到这个问题在这里之前已经被问过 tensorflow-has-no-attribute-compat 但给出的答案是 Microsoft Visual C++ 2015-2019 Redist
我有以下错误。我正在使用 tensorflow 的 conda 安装。我正在努力尝试将它与我的 GPU 一起使用。 Loaded runtime CuDNN library: 5005 (compat
添加 Android 平台(ionic cordova platform add android)后,我构建了我的 Ionic 项目(ionic cordova build android),但出现错
我刚刚在野外看到了这个元标记,想知道它的作用以及为什么要使用它? 阅读documentation在 About.com 上,它说: "IE=edge" tells Internet Explorer
切换到 Android Studio 3.2 canary 后,我收到以下构建错误。 我看过this发布这个人有类似问题但没有提到解决方案的地方。 我想尝试新的 Material 组件和喷气背包,所以
我刚刚将 build.gradle 编译 SDK 更新为 27 API。 compileSdkVersion 27 buildToolsVersion '27.0.3' targetSdkVersio
我有一个简单的 HTML5/ASP.NET 网站,我今天开始在 IE10 中测试它,因为它是为 Win7 发布的。 这是我组织内的一个 Intranet 站点,我相信不久前部署了一个组策略以默认启用在
假设您有一个需要维护的旧代码库,它显然不符合当前标准。在获得标准合规性的同时,您将如何分配您的工作以保持代码库向后兼容?什么对你很重要? 最佳答案 在我的工作场所,我们没有任何时间仅仅因为它可以使代码
我已经在 JDK7 中创建了一个应用程序,但 jre6 仍在市场上使用,如果我将我的 jar 文件发送给使用 jre6 的人,它不会工作,应用程序是否有检查 jre 版本的方法,如果它不兼容然后要
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我正在开发一个同时具有 GUI(图形)和 API(脚本)界面的应用程序。我们的产品有一个非常大的安装基础。许多客户投入了大量时间和精力来编写使用我们产品的脚本。 在我们所有的设计和实现中,我们(可以理
我有以下类层次结构: class O_Base {...} class O extends O_Base {...} abstract class A_Abstract { public fu
我得到了这两个 ko.compulateds 列表,我想在其中拖放,但也使用按钮移动以删除添加到列表的内容。 但是我无法让它们同时使用拖放和按钮功能。 对于拖放,我使用 Ryan Niemeyers
我从事的项目以源代码和二进制形式免费分发,因为我们的许多用户需要专门为他们的系统编译它。这需要一定程度的考虑,以保持与旧主机系统(主要是它们的编译器)的向后兼容性。 其中一些最糟糕的,例如 GCC 3
我的应用程序以 API/minSDKversion 5 为目标,并在 2.2 上运行良好。我的 friend 刚刚尝试将我的应用程序下载到他运行 2.3.4 的 Samsung Galaxy S2 上
简而言之,我的问题是: C 标准明确规定结构成员的相对地址应该按照声明的顺序增长。它也没有说明结构成员应该如何精确对齐的任何细节。显然,这样做是为了允许填充结构和打包结构的实现。然而,从理论上讲,可以
我是一名优秀的程序员,十分优秀!