ios - 将 object_setInstanceVariable() 转换为 ARC?

标签 ios automatic-ref-counting

我想转换一个实例

object_setInstanceVariable(self, [key UTF8String], *(id**)addr);

到 ARC。当我尝试使用 Xcode 内置的 Objective-C ARC 转换器时,出现以下错误:

'object_setInstanceVariable' is unavailable: not available in automatic reference counting mode

我该如何处理这个问题?我知道我可以将 --fno-objc-arc 作为编译器标志,但如果可能的话,我非常想改用 ARC(我有很多目标,否则我将不得不手动更改编译器标志) .

(代码最初取自 Mike Mayo 在 Rackspace Mobile Apps 的 NSObject+NSCoding and Archiver)

最佳答案

来源:https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html

唯一的其他方法是:

void object_setIvar(id object, Ivar ivar, id value);

你需要事先得到Ivar值,可以通过class_getInstanceVariable(Class class, char* name)获取。

总体而言,这将实现与以前相同的效果,同时现在与 ARC 兼容。

关于ios - 将 object_setInstanceVariable() 转换为 ARC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13196727/

相关文章:

ios - 如何在 Swift 中继承 UITableViewController

objective-c - ARC下归零弱引用的集合

ios - 为什么我的 View Controller (从 Storyboard segue 模态呈现)在被解雇后没有被释放?

iphone - 为什么弱 NSString 属性没有在 iOS 中发布?

ios - 如何释放在另一个函数中创建的对象?

objective-c - 当 ARC 将 weak 属性设置为 nil 时,kvo 会发生吗?

ios - Swift 3.0 中的 Spotify SDK : how to know when a song ends

iphone - 为 UIResponder 添加两个监听器