问题标签 [mac-frameworks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
621 浏览

macos - 核心数据 EXC_BAD_ACCESS 保存失败?

我的核心数据模型无法保存。我可以在其中插入一种对象(图表 - 见下文),然后保存就可以了。我可以添加这种对象的多个副本并且保存将起作用。当我插入一个不同的对象时,任何一个,它都会失败,通常是这样的:

其他对象并不复杂:只是 String 和 Number 值。它们的值是在保存时设置的。我已经将程序简化为 NSPersistentDocument 的初始化:以下是initWithType:error:在我的 NSPersistentDocument 子类中调用的相关代码:

运行时,我得到:

每个实体都有自己的子类 NSManagedObject。每个属性都被定义为一个动态属性。每个属性都有一个默认值,这是合理的。

我看到其他人建议过度释放这类问题,但我没有在 Core Data 代码的任何地方执行保留和释放。我选择在 Graph 对象之后插入哪个实体并不重要;他们都失败了。

Core Data 工作由框架(Graph)完成。该框架是从一个基于文档的应用程序 (Z) 调用的,该应用程序是框架的文档创建对象的子类。

这是保存面板末尾的堆栈跟踪:

0 投票
1 回答
168 浏览

cocoa - 构建需要 Apple 框架的自定义框架的 Cocoa 最佳实践

假设我有一个包含十几个类和类别的自定义框架。它们都继承/扩展标准可可类。出于这个原因,我的框架在编译期间链接到 <Cocoa>。

我的问题是,如果我添加一个需要 < QuartzCore > 的类,推荐的打包方法是什么?

1)如果我只是将类添加到框架中,并导入 QuartzCore,我的框架的任何消费者也必须导入 QuartzCore。

2)如果我将类移到另一个框架中,任何消费者都必须导入我的两个框架以获得完整的功能,以及 QuartzCore。第一个框架中的任何类都不能使用第二个框架。

3)有没有办法做#ifdef #endif或类似的事情,然后弱链接QuartzCore框架,以便Cocoa标准类和QuartzCore依赖类都在一个框架中,但消费者不必添加QuartzCore他们的项目?如果理想情况下 QuartzCore 不存在,则该类/类别根本无法用于运行时。

0 投票
1 回答
738 浏览

xcode - 为什么我的 xcode 项目中的 Frameworks/MyFramework.framework/ 是空的?

我是 xcode 和可可的新手。

根据Framework Programming Guide,我在制作框架时应该遵循一定的目录结构。我最近使用 xcode 启动了一个框架项目,惊讶地发现这个目录结构并没有自动为我提供。

来自编程指南:(如果你不想的话,你不必点击那个链接)

清单 1 一个简单的框架包

我需要手动制作这个目录结构吗?我已经按照这个问题中的步骤构建了框架产品并将其包含在另一个项目中。虽然项目确实构建,但Frameworks/MyFramework.framework/它是空的。

我自己的探索使我意识到上述文件系统是在产品中创建的(请参阅下面的评论)。这改变了问题:Frameworks/MyFramework.framework/尽管所有公共标头都存在于框架产品中,为什么是空的?

谢谢!

0 投票
1 回答
1327 浏览

python - 我通过brew安装了python 2.7.3,但是virtualenv总是使用2.7.1,为什么?

系统默认python为:

$PATH

python 2.7.3通过安装homebrew

并将其链接起来,

但是当我制作一个virtualenv时,它仍然是2.7.1

如何解决?

0 投票
1 回答
596 浏览

macos - 在 Mono Mac 上 P/Invoke 到 .framework 文件中

我正在移植一些我们在 Windows 上的 C# 代码,以便通过 Mono 在 Mac 上使用。在我们的代码中,我们 P\Invoke 进入一个非托管 C++ dll。不幸的是,我们的构建过程只能在 Mac 上给出一个框架文件,而不是一个 dylib 文件。

当我为 Mono 移植代码时,一切正常,但 P\Invoke 进入框架文件。我尝试将框架文件添加到 /Library/Frameworks 文件夹中,该文件夹应该位于默认搜索路径中,但我不断收到 DllNotFound 异常。根据Mono Interop Guide,Mono 添加 .so 作为在 Mac 上搜索的扩展名存在问题。所以我尝试添加一个配置文件并将目标作为 .framework 文件提供,但我仍然遇到了同样的异常。Mono 指南提到使用框架执行 P\Invoke 变得更加复杂,但没有提及确切的问题或如何解决它们。

有人知道如何在 Mono 上 P\Invoke 到框架中吗?

0 投票
1 回答
2794 浏览

xcode - Swift 共享库为命令行应用程序静态链接?

我正在尝试在我的 Mac OS X Swift 应用程序中使用外部框架。外部框架也使用 Swift,因此依赖于 Swift 共享库(例如,libswiftCore.dylib)。这是通过命令验证的

抬头@rpath我看到

所以在运行时我希望@rpath解决@executable_path/Frameworks

问题

我收到运行时错误

查看包含我构建的可执行文件的文件夹,我没有看到Frameworks文件夹。

尝试修复失败

我尝试为我的应用程序设置EMBEDDED_CONTENT_CONTAINS_SWIFTYES但这仍然没有创建Frameworks文件夹。

我尝试手动创建Frameworks文件夹并在 Swift 共享库中复制(从/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx. 这修复了原始错误,现在我看到像这样的重复符号变暖:

问题

Swift 库是否有可能被静态链接到我的应用程序中?如果是这样,我该如何关闭它并让 XCode 创建Frameworks文件夹版本?

我认为重要的一点是它是一个命令行应用程序。我尝试创建一个常规应用程序并添加框架,我Frameworks在我的包中获得了预期的文件夹.app,它包含 Swift 共享库

0 投票
1 回答
2993 浏览

c++ - Qt:Mac 上的链接框架:使用 rpath

我想用 Qt 创建一个自定义框架。我可以自己创建框架,但是 Qt 在运行时找不到框架:

原因很简单:二进制文件不知道去哪里寻找框架。

我在二进制文件上使用了 otool 并看到了这个:

所以,我的问题如下(有关更多详细信息,请查看以下内容):如何告诉 qmake 将我的库的路径设置为:

有没有办法用 qmake 做到这一点?我确实知道如何用 .pro 更改它install_name_tool,但我想直接将它添加到 .pro 文件中。


到目前为止我做了什么:

我修改了我的 pro 文件以更改为二进制文件的 rpath 以包含构建时库所在的路径:

这样,我可以简单地修改 rpath 以进行发布,而无需使用install_name_tool. 但是,为此,我需要将第一行更改为:

在我的应用程序 pro 文件中,我指定了以下内容:

最后缺少的部分是如何添加@rpath/. 谢谢你的帮助。

0 投票
1 回答
951 浏览

macos - 如何在 go 中使用 macOS/OS X 框架

例如,如何在 macOS 上使用 CoreGraphics 和 CoreFoundation 来操作屏幕和处理数据。

0 投票
0 回答
28 浏览

macos - 在软件更新期间保留旧版本的框架会破坏 macOS 上的代码签名吗?

TN2206 [不使代码签名无效的更改]中提到“嵌套代码可以替换为等效(符合指定要求)嵌套代码,而不会干扰外部签名。” 所以我想看看下面的情况是否可行:

假设我制作了一个安装在用户机器上的应用程序,该应用程序/Applications/MyApp.app附带一个具有以下布局的框架:

现在我想更新 MyApp 以使用 MyFramework v2。用户已下载新版本的 .dmg,其框架布局为:

现在我将拥有安装程序(或相关机制)将内容从更新映像复制/传输到旧安装位置(基本上覆盖它),但我想保留已安装的 v1 MyFramework。所以更新框架布局后应该变成:

假设所有内容都可能已签名,我想知道保留旧的 v1 框架是否会破坏更新后的应用程序的代码签名检查?