0

所以我不得不继承 NSURLProtocol 因为我使用的是 UIWebView 并且想要拦截 ajax 调用,这在这个例子中工作得很好。我必须从+ (BOOL)canInitWithRequest:(NSURLRequest *)request导致问题的请求中获取数据,我现在需要调用实例方法来处理数据,但我不能,因为它是一个类方法。

如何根据请求中的内容调用实例方法?

4

2 回答 2

0

如果没有实例,就不能从类方法调用实例方法。这适用于所有面向对象的系统,AFAIK。毕竟,实例方法(通常)使用类方法不能拥有的数据。想象一个具有属性的对象name,您现在拥有一千个具有不同名称的对象。类方法应该如何知道name使用哪个?

因此,您需要找到一种方法来根据您的请求以某种方式查询您的类的实例,或者找到一种方法以不涉及实例变量的方式获取信息(如果方法不使用实例变量,您可以转将其转换为类方法甚至 C 函数)。有许多不同的方法可以解决“查询问题”,选择哪种方法在很大程度上取决于您的设计甚至品味。

于 2013-08-08T11:35:55.110 回答
0

canInitWithRequest: 不应该做任何工作,它应该只响应“YES”或“NO”。“startLoading”是你工作的地方。

于 2014-03-31T08:49:01.540 回答