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