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