【发布时间】:2017-11-26 22:57:05
【问题描述】:
我有几个UIView 或UITableViewCell。里面我有C回调,例如:
CCallback(bridge(self),
{(observer, data) -> Void in
let mySelf = Unmanaged<DetailedView>.fromOpaque(observer!).takeRetainedValue()
mySelf.fillLoadedData(data: data)
});
别处
func bridge<T : AnyObject>(_ obj : T) -> UnsafeMutableRawPointer {
return UnsafeMutableRawPointer(Unmanaged.passUnretained(obj).toOpaque())
}
在 C 中:
void CCalback(void * classPtr, void(*callback)(void *, MyData)){
//fill data
callback(classPtr, data)
}
我应该使用takeUnretainedValue 还是takeRetainedValue 结束?据我了解,保留会增加对象引用计数,所以它不会被自动销毁?否则,如果我使用takeUnretainedValue,如果self 是自动释放的,这将崩溃,所以使用takeRetainedValue 会阻止它。我对么?
【问题讨论】:
-
bridge(self)是什么? -
@MartinR 代码添加
标签: ios swift memory-management