所以我不得不继承 NSURLProtocol 因为我使用的是 UIWebView 并且想要拦截 ajax 调用,这在这个例子中工作得很好。我必须从+ (BOOL)canInitWithRequest:(NSURLRequest *)request
导致问题的请求中获取数据,我现在需要调用实例方法来处理数据,但我不能,因为它是一个类方法。
如何根据请求中的内容调用实例方法?
所以我不得不继承 NSURLProtocol 因为我使用的是 UIWebView 并且想要拦截 ajax 调用,这在这个例子中工作得很好。我必须从+ (BOOL)canInitWithRequest:(NSURLRequest *)request
导致问题的请求中获取数据,我现在需要调用实例方法来处理数据,但我不能,因为它是一个类方法。
如何根据请求中的内容调用实例方法?
如果没有实例,就不能从类方法调用实例方法。这适用于所有面向对象的系统,AFAIK。毕竟,实例方法(通常)使用类方法不能拥有的数据。想象一个具有属性的对象name
,您现在拥有一千个具有不同名称的对象。类方法应该如何知道name
使用哪个?
因此,您需要找到一种方法来根据您的请求以某种方式查询您的类的实例,或者找到一种方法以不涉及实例变量的方式获取信息(如果方法不使用实例变量,您可以转将其转换为类方法甚至 C 函数)。有许多不同的方法可以解决“查询问题”,选择哪种方法在很大程度上取决于您的设计甚至品味。
canInitWithRequest: 不应该做任何工作,它应该只响应“YES”或“NO”。“startLoading”是你工作的地方。