寻找有效的Objective-C ARC代码崩溃运行的示例

6
为了更好地理解ARC,我正在寻找能够在启用ARC的情况下编译但在运行时崩溃的示例代码。也就是说,常见的陷阱可能被忽视,如果您以前从未遇到过这个问题,可能会导致您的调试成为噩梦。
最好是提供真实生活中的示例代码,将其简化为最小的可重现问题的代码。尤其是当ARC代码与C或C++代码进行交互时,更应该注意。

1
这是一个相当不错的,我认为。 - Philipp Schlösser
2
这太模糊了。使用过度自由的转换可能会产生无数例子(例如[(_bridge id)0x42 hash];)。可能有一些模式需要进行恶意转换才能崩溃,但那只是错误。然而,最终并不清楚真正的问题是什么。 - bbum
1个回答

4

我想给你举一个与bbum类似的例子,涉及到IT技术。

如果将CF...转换为NS...时转换不正确,则会导致ARC混淆,例如:

CFArrayRef *supportedInterfaces = CNCopySupportedInterfaces();
NSArray *interfaceNames = (__bridge_transfer NSArray *)supportedInterfaces;
CFRelease(supportedInterfaces);

由于 __bridge_transfer 在释放 CFArrayRef 时会保留 NSArray,因此建议过度释放 supportedInterfaces。在这种情况下,要么不使用 CFRelease(),要么使用普通的 __bridge。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接