相关疑难解决方法(0)

1511
推荐指数
11
解决办法
72万
查看次数

如何从Swift调用Objective-C代码

在Apple的新Swift语言中,如何调用Objective-C代码?

Apple提到它们可以在一个应用程序中共存,但这是否意味着可以在技术上重用Objective-C中的旧类,同时在Swift中构建新类?

推理

Objective-C是一种独立于平台的语言,而Swift则依赖于平台.因此,在Swift中编写非平台相关代码(业务逻辑库)并不明智.但是,在其中编写与平台相关的代码(例如,与接口相关)将非常好.不是说这是一个好主意,但它肯定是一种兴趣.

objective-c swift

936
推荐指数
13
解决办法
27万
查看次数

静态链接与动态链接

在某些情况下,是否有任何令人信服的性能原因选择静态链接而不是动态链接?我已经听过或读过以下内容,但我对这个问题的了解不足以保证它的真实性.

1)静态链接和动态链接之间的运行时性能差异通常可以忽略不计.

2)(1)如果使用使用配置文件数据优化程序热路径的配置文件编译器,则不成立,因为使用静态链接,编译器可以优化代码和库代码.通过动态链接,您的代码可以进行优化.如果大部分时间都花在运行库代码上,那么这可能会产生很大的不同.否则,(1)仍然适用.

c c++ performance dynamic-linking static-linking

382
推荐指数
14
解决办法
22万
查看次数

API和ABI之间的区别

我是linux系统编程的新手,在阅读Linux系统编程时遇到了API和ABI .

API的定义:

API定义了一个软件在源级别与另一个软件通信的接口.

ABI的定义:

API定义源接口,而ABI定义特定体系结构上两个或多个软件之间的低级二进制接口.它定义了应用程序如何与自身交互,应用程序如何与内核交互以及应用程序如何与库交互.

程序如何在源级别进行通信?什么是源级别?它无论如何都与源代码有关?或者库的源代码包含在主程序中?

我所知道的唯一区别是API主要由程序员使用,而ABI主要由编译器使用.

api abi

176
推荐指数
8
解决办法
5万
查看次数

图书馆?静态的?动态?还是框架?项目在另一个项目内

我有一个现有的iOS应用程序,并希望添加一大块代码,我一直在开发另一个项目,以方便测试.新的块基本上处理将图像保存到各种共享服务等.因为共享代码需要大量的测试和未来的更新,我想知道将代码块合并到我现有的应用程序中的最佳方法是什么.

我不知道它应该是静态库,动态库还是框架,老实说,我不确定区别是什么,或者我应该如何去做它并在Xcode中设置它.

我所知道的是,我需要/想要为共享代码保留单独的测试和更新应用程序,并让主应用程序使用它.

如果你还不能说,我不是一个git wiz.我只是一个简单的单人开发人员.

任何帮助或方向将不胜感激.谢谢!

xcode frameworks static-libraries ios

132
推荐指数
2
解决办法
5万
查看次数

如何安全地将对象(尤其是STL对象)传入DLL或从DLL传递?

如何将类对象(尤其是STL对象)传递给C++ DLL?

我的应用程序必须以DLL文件的形式与第三方插件交互,我无法控制这些插件构建的编译器.我知道STL对象没有保证ABI,我担心我的应用程序会导致不稳定.

c++ windows dll stl abi

99
推荐指数
4
解决办法
3万
查看次数

使用Swift 5.1编译的模块不能由Swift 5.1.2编译器导入

我有一个框架(在本例中为RxSwift),已使用Xcode 11.0将其编译为传统RxSwift.framework样式包

这很好地导入了Xcode 11.0和11.1,从没有任何问题

今天,在Apple发布Xcode 11.2之后,我进行了升级,并看到以下错误消息:

使用Swift 5.1编译的模块不能由Swift 5.1.2编译器导入

我习惯于迅速地编译不匹配的东西,而且我知道我可以使用Xcode 11.2重新编译RxSwift并继续进行,但是Swift 5.1的主要特点是模块稳定性

我给人的印象是,既然我们已经有了模块稳定性,那么框架就不需要继续与每个新的Xcode版本一起重新编译,但是事实并非如此。

如果有人能解释这里发生的事情,我将不胜感激。Xcode 11.2是否存在错误?还是我最初用Xcode 11.0编译时需要某种方式告诉它我想要模块稳定性吗?

xcode ios swift swift5.1

62
推荐指数
2
解决办法
7111
查看次数

什么是Java中的二进制兼容性?

我正在阅读Joshua Bloch撰写的Effective Java.

在第17项:"仅使用接口定义类型"中,我遇到了不建议使用接口存储常量的解释.我在下面解释.

"更糟糕的是,它代表了一种承诺:如果在将来的版本中修改了类以便它不再需要使用常量,它仍然必须实现接口以确保二进制兼容性."

二进制兼容性意味着什么?

有人可以用Java中的示例指导我,以显示代码是二进制兼容的.

java

40
推荐指数
3
解决办法
9478
查看次数

代码对象和可执行文件之间的区别

我是一名C++初学者,我正在研究该语言的基础知识.我的书中有一个关于编译器的主题,我的问题是我无法理解文本想要说的内容:

C++是一种编译语言,因此您需要将源代码转换为计算机可以执行的文件.该文件由编译器生成,称为目标代码(.obj),但像"hello world"程序这样的程序由我们编写的部分和C++库的一部分组成.链接器链接程序的这两部分并生成可执行文件(.exe).

为什么我的书告诉计算机执行的文件是带有obj后缀的文件(目标代码),然后说它是带有exe后缀的文件?

c++ linker

24
推荐指数
3
解决办法
3万
查看次数

为什么sizeof(string)== 32?

字符串结构中导致sizeof()为32的开销是多少?

c++ string

21
推荐指数
4
解决办法
2万
查看次数