我在我的一个 Objective-C 项目中使用 JavaScriptCore,我想随时知道当陷入 JS 回调时当前文件和行是什么。
没有办法用public headers来做,所以我看了一下源代码,似乎可以通过使用一些 C++ 代码来访问文件和行。
// ctx is a JSContextRef, that's the only type I have an access to
JSC::JSValue jsCtx = toJS(ctx);
CodeBlock* codeBlock = jsCtx->codeBlock();
// Line
unsigned sourceOffset = codeBlock->sourceOffset();
// Source URL
SourceProvider* sourceProvider = codeBlock->source();
const String& url = sourceProvider->url();
它显然需要JSC
、JSValue
、CodeBlock
和的定义SourceProvider
。我将所有这些都放在单独的标题中,但它确实很大。
- 我应该直接包含这些标题吗?
- 如果这些文件需要其他头文件怎么办?我可能会以拥有多个我不会使用的标题结束。
- 让我们忘记内部源代码可能会改变:我想要做的甚至可能吗?