【发布时间】:2015-09-26 02:11:25
【问题描述】:
我想加载远程url并使用本地资源(image,css,js...),所以我继承了NSURLProtocol。
import Foundation
class MyURLProtocol: NSURLProtocol {
override class func canInitWithRequest(request: NSURLRequest) -> Bool {
print(request.URL!.absoluteString)
if request.URL!.absoluteString.hasSuffix("jquery.min.js"){
return true
}
return false
}
override class func canonicalRequestForRequest(request: NSURLRequest) -> NSURLRequest{
let urlPath = NSBundle.mainBundle().pathForResource("jquery.min", ofType: "js", inDirectory:"res/js")
let url = NSURL.fileURLWithPath(urlPath!)
let mutableReqeust = request.mutableCopy() as! NSMutableURLRequest
mutableReqeust.URL = url
return mutableReqeust
}
}
在 AppDelegate 中注册新的 url 协议
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
NSURLProtocol.registerClass(MyURLProtocol)
return true
}
我的资源目录结构
res
└── js
└── jquery.min.js
代码运行时出现如下错误
0x111785900 <+0>: pushq %rbp
0x111785901 <+1>: movq %rsp, %rbp
0x111785904 <+4>: pushq %rbx
0x111785905 <+5>: pushq %rax
0x111785906 <+6>: movq %rdi, %rbx
0x111785909 <+9>: movq 0x118(%rbx), %rdi
-> 0x111785910 <+16>: movq 0x368(%rdi), %rax [WebThread(7):EXC_BAD_ACCESS(code=1.address=0x368)].
0x111785917 <+23>: movq %rax, 0x508(%rbx)
我用 lldb 多次输入 continue,但代码停留在 0x111785910
代码有什么问题?
【问题讨论】:
-
某事可能是零 - 你没有提供足够的信息。 your 代码的哪一行崩溃了?控制台上还显示了哪些其他消息?
-
xx.xx.xx.xx/login.jsp?title=no xx.xx.xx.xx/login.jsp?title=no xx.xx.xx.xx/login.jsp?title=no xx.xx.xx.xx/login.jsp?title=no xx.xx.xx.xx/login.jsp?title=no xx.xx.xx.xx/js/ustc.js xx.xx.xx.xx/js/jquery.min.js (lldb) continue 进程 15696 恢复 (lldb) continue 进程 15696 恢复 (lldb)
-
您需要查看堆栈跟踪并查看代码中的哪一行引发了异常。或者设置断点并单步执行你的代码,看看它在哪里崩溃。
-
谢谢,我去试试