我正在尝试集中我的应用程序的网络代码。基本上,在任何需要来自服务器的信息的地方,我都会创建我的类 ServerRequest 的对象 serverRequest 来获取信息。ServerRequest 完成后,需要将信息发送回调用对象。当然它应该异步工作——我不希望我的应用程序在等待时停止。
信息的返回是棘手的部分。看来我的选择是授权和通知。据我所知,他们都有自己的问题:
委托:我将自己作为 serverRequest 对象的委托。问题是,如果我在请求完成之前被释放,serverRequest 将发送一个已释放对象的消息,我的程序将崩溃。为了防止这种情况,我必须跟踪我的所有服务器请求(可能不止一个),并在我的 dealloc 方法中让它们都知道,这样我就不会再收到任何消息了。这一切都是可能的,但它确实看起来很痛苦。
通知:传递信息似乎需要做很多工作。我必须将自己添加为通知中心的观察者,然后在我解除分配时删除自己。此外,我必须将完成后发布哪种通知的信息传递给 ServerRequest。我的 ServerRequest 必须将接收到的数据推送到一个 NSDictionary 中,然后我在它通过后将其取回。
这两种方法都应该可以工作,但它们似乎都需要付出很多努力才能让 ServerRequest 唤醒调用代码并将其传递给一个对象。我认为通知更灵活一点,痛苦少一点,导致崩溃的可能性更小,但我对这两种方法都不满意。对于任何反馈,我们都表示感谢。谢谢。