几周前我开始使用objective-c和iOS(值得牢记),我提前为糟糕的图表道歉!
上图显示了我对 Web 服务的调用的结构。细箭头表示对象创建另一个对象,而粗箭头表示对象持有对指向对象的强(保留)引用。
我相信这包含所谓的“循环引用”,并且在释放对象时会产生问题。
我知道简单的答案是替换一些对弱引用的强引用,我很乐意这样做,除了我的项目也针对 iOS 3.2(不是我的决定——我真的无法改变这个事实!) . 所以,我认为我说我必须使用 __unsafe_unretained 是对的,但我很担心这些不会自动归零,因为当对象被释放时我会遇到 EXC_BAD_ACCESS 问题。 ..
所以我的问题首先是我有循环引用。要解决,我将不得不使用 __unsafe_unretained,这导致了我的第二个问题:如何正确管理这些?
一个可能相关的问题是: NSURLConnection 如何管理它的强引用?我从各种渠道听说它保留了它的代表?所以...如果我保留一个 NSURLConnection(并且也是它的代表)并且它保留了我,这也将是一个循环引用,不是吗?它如何解决我的问题?
非常欢迎任何建议!
问候,尼克