相关疑难解决方法(0)

如何从Swift调用Objective-C代码

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

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

推理

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

objective-c swift

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

什么是应用程序二进制接口(ABI)?

我从未明白ABI是什么.请不要指向维基百科的文章.如果我能理解它,我就不会在这里张贴这么长的帖子.

这是我对不同界面的看法:

电视遥控器是用户和电视之间的接口.它是一个现有实体,但本身无用(不提供任何功能).遥控器上每个按钮的所有功能都在电视机中实现.

接口:它是间"现有实体"层 functionalityconsumer的该功能.接口本身不起作用.它只是调用后面的功能.

现在取决于用户是谁,有不同类型的接口.

命令行界面(CLI)命令是现有实体,消费者是用户和功能所在.

functionality: 我的软件功能解决了我们描述这个界面的一些目的.

existing entities: 命令

consumer: 用户

图形用户界面(GUI)窗口,按钮等是现有实体,消费者再次是用户和功能所在.

functionality: 我的软件功能解决了我们描述这个界面的一些问题.

existing entities: 窗口,按钮等..

consumer: 用户

应用程序编程接口(API)函数(或更正确的)接口(在基于接口的编程中)是现有实体,这里的消费者是另一个程序而不是用户,并且该层后面的功能也是如此.

functionality: 我的软件功能解决了我们描述这个界面的一些问题.

existing entities: 函数,接口(函数数组).

consumer: 另一个程序/应用程序

应用程序二进制接口(ABI)这是我的问题开始的地方.

functionality: ???

existing entities: ???

consumer: ???

  • 我用不同的语言编写了软件并提供了不同类型的接口(CLI,GUI和API),但我不确定我是否提供过任何ABI.

维基百科说:

ABI涵盖了诸如此类的详细信息

  • 数据类型,大小和对齐方式;
  • 调用约定,它控制函数参数的传递方式并返回检索的值;
  • 系统调用号码以及应用程序应如何向操作系统进行系统调用;

其他ABI标准化细节,如

  • C++名称错误,
  • 异常传播,和
  • 在同一平台上调用编译器之间的约定,但不需要跨平台兼容性.
  • 谁需要这些细节?请不要说操作系统.我知道汇编编程.我知道链接和加载是如何工作的.我确切地知道里面发生了什么.

  • 为什么C++名称输入?我以为我们正在谈二进制.语言为什么会进来?

无论如何,我已经下载了[PDF] System V Application Binary Interface Edition 4.1(1997-03-18),看看它究竟包含了什么.好吧,大部分都没有任何意义.

  • 为什么它包含两章(第4和第5章)来描述ELF文件格式?实际上,这些是该规范中仅有的两个重要章节.其余章节是"处理器特定的".无论如何,我认为这是一个完全不同的话题.请不要说ELF文件格式规范 ABI.根据定义,它不符合接口的条件.

  • 我知道,因为我们谈论的水平很低,所以必须非常具体.但我不确定它是如何"指令集架构(ISA)"具体的?

  • 我在哪里可以找到Microsoft Windows的ABI?

所以,这些是困扰我的主要问题.

compiler-construction api binary operating-system abi

444
推荐指数
11
解决办法
10万
查看次数

@import vs #import - iOS 7

我正在玩一些新的iOS 7功能,并使用WWDC视频"在iOS上实现引导UI"中讨论的一些图像效果.为了在会话的源代码中产生模糊效果,UIImage通过导入UIKit的类别扩展,如下所示:

@import UIKit;
Run Code Online (Sandbox Code Playgroud)

我想我在另一个会话视频中看到了一些相关内容,但我找不到它.我正在寻找有关何时使用此信息的任何背景信息.它只能用于Apple框架吗?使用此编译器指令的好处是否应该返回并更新旧代码?

import objective-c ios ios7

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

使用Xcode获取错误"没有这样的模块",但框架就在那里

我目前在Swift编码,我有一个错误:

没有这样的模块社交

但我不明白,因为模块在我的项目中,在"链接框架和库"和"嵌入式二进制文件"中声明.

框架在Objective-C中,所以我为它编写了一个Bridge Header.

请问,我如何让Xcode识别框架?

错误模块

项目

链接框架,库

标题桥

xcode ios swift

303
推荐指数
27
解决办法
35万
查看次数

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

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

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

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

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

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

xcode frameworks static-libraries ios

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

什么是伞头?

什么是伞头?有什么用?我收到了一个警告,如下所示.这是什么意思?

<module-includes>:1:1: warning: umbrella header for module 'XCTest' does not include header 'XCTextCase+AsynchronousTesting.h' [-Wincomplete-umbrella]
#import "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework/Headers/XCTest.h"
Run Code Online (Sandbox Code Playgroud)

objective-c ios

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

将Objective C框架连接到Swift iOS 8应用程序(Parse框架)

我正在尝试使用带有Swift编程语言的Objective C框架进行iOS 8开发.这是导入的具体情况,但一般问题是:

如何将Objective C框架导入swift并获得导入识别?

我正在尝试使用iOS 8和Xcode 6测试版将Parse框架集成到一个快速的应用程序中.

以下是Objective C中Parse框架集成的技术:

https://www.parse.com/apps/quickstart#social/mobile/ios/native/existing

我已经将Parse框架作为压缩存档下载,解压缩并将其导入Xcode 6而没有任何问题.在我的应用程序中,它显示为名为Parse.framework的格式正确的框架.

我目前的思考过程是修改AppDelegate.swift项目根目录下的文件.这是没有修改的当前文件(在快速项目创建时由Xcode自动生成):

https://gist.github.com/fconcklin/e8ef7d8b056105a04161

我试图通过添加行import Parse下面的行来导入解析import UIKit.但是,Xcode发出警告,表示没有找到这样的模块,并且构建失败.

我还尝试创建一个${PROJ_NAME_HERE}-Bridging-Header.h包含Parse使用的Objective C导入的文件import <Parse/Parse.h>.这条线不会引发错误,但似乎最终没有任何区别.

提前致谢.如果您需要更多信息,请告诉我.

xcode objective-c ios parse-platform swift

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

Swift项目中的导入框架,Xcode

我正在尝试导入myFramework项目.我myFramework在Build Phases-> Link Binary With Libraries中添加了.

Objective-c的工作原理:

#import <UIKit/UIKit.h>
#import <myFramework/myFramework.h>
Run Code Online (Sandbox Code Playgroud)

但是在Swift中,我收到一个No such module myFramework错误:

import UIKit
import myFramework
Run Code Online (Sandbox Code Playgroud)

根据Swift文档:

导入外部框架

您可以导入具有纯Objective-C代码库,纯Swift代码库或混合语言代码库的外部框架.无论框架是用单一语言编写还是包含来自两种语言的文件,导入外部框架的过程都是相同的.导入外部框架时,请确保将要导入的框架的"定义模块"构建设置设置为"是".

您可以使用以下语法将框架导入到不同目标中的任何Swift文件中:

迅速

import FrameworkName
Run Code Online (Sandbox Code Playgroud)

您可以使用以下语法将框架导入到不同目标中的任何Objective-C .m文件中:

Objective-C的

@import FrameworkName;
Run Code Online (Sandbox Code Playgroud)

myFramework使用Xcode 5 创建.Xcode 5没有"定义模块"构建设置.

问题出在哪儿?

xcode frameworks ios swift

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

没有找到目标的伞头,将不会生成模块图

当我尝试在Xcode 6.3中构建CKCountdownButton作为框架时,它会抱怨

警告:找不到目标'CKCountdownButton'的伞头,将不会生成模块图

然后,当我在其他项目中导入此框架时,它失败了没有这样的模块'CKCountdownButton'

xcode ios

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

如何在swift中使用.a静态库?

我想在swift中使用我的webrtc .a静态库.你能帮帮忙吗?我读过你不能在swift中使用静态库,这是真的吗?

static-libraries ios webrtc swift

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

什么是Xcode 4中的目标成员资格

我正在寻找Xcode中目标成员资格的示例.我对它的确切含义感到有些困惑.例如,我有两个不同的目标成员资格.myApp和myAppTests.如果我指定一个文件(比如myAppFile.h)作为myAppTests的一部分而不是myApp,这意味着什么?我的应用程序构建和运行时会发生什么?

谢谢

xcode xcode4

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

如何在包含Swift的iOS中创建开发框架?

我的目标是创建一个包含Swift和Objective-C的iOS框架,我可以在我的开发项目中使用它.该框架的本质是框架本身正在发展.因此,每次使用此框架构建项目时都很重要(我将使用"使用"项目的框架称为项目缺乏更好的术语),我想确保框架本身重新构建.我希望这是一个框架,因为我有一些使用应用程序,我希望使用相同的框架代码.我已经为今天的大部分时间而苦苦挣扎,并浪费了大量时间在本来应该做的事情上,至少在我的想法中,更容易.所以,我会分享我的过程.

frameworks ios swift xcode6 xcode7

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