Apple提到它们可以在一个应用程序中共存,但这是否意味着可以在技术上重用Objective-C中的旧类,同时在Swift中构建新类?
Objective-C是一种独立于平台的语言,而Swift则依赖于平台.因此,在Swift中编写非平台相关代码(业务逻辑库)并不明智.但是,在其中编写与平台相关的代码(例如,与接口相关)将非常好.不是说这是一个好主意,但它肯定是一种兴趣.
我从未明白ABI是什么.请不要指向维基百科的文章.如果我能理解它,我就不会在这里张贴这么长的帖子.
这是我对不同界面的看法:
电视遥控器是用户和电视之间的接口.它是一个现有实体,但本身无用(不提供任何功能).遥控器上每个按钮的所有功能都在电视机中实现.
接口:它是间"现有实体"层
functionality
和consumer
的该功能.接口本身不起作用.它只是调用后面的功能.现在取决于用户是谁,有不同类型的接口.
命令行界面(CLI)命令是现有实体,消费者是用户和功能所在.
functionality:
我的软件功能解决了我们描述这个界面的一些目的.
existing entities:
命令
consumer:
用户图形用户界面(GUI)窗口,按钮等是现有实体,消费者再次是用户和功能所在.
functionality:
我的软件功能解决了我们描述这个界面的一些问题.
existing entities:
窗口,按钮等..
consumer:
用户应用程序编程接口(API)函数(或更正确的)接口(在基于接口的编程中)是现有实体,这里的消费者是另一个程序而不是用户,并且该层后面的功能也是如此.
functionality:
我的软件功能解决了我们描述这个界面的一些问题.
existing entities:
函数,接口(函数数组).
consumer:
另一个程序/应用程序应用程序二进制接口(ABI)这是我的问题开始的地方.
functionality:
???
existing entities:
???
consumer:
???
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?
所以,这些是困扰我的主要问题.
我正在玩一些新的iOS 7功能,并使用WWDC视频"在iOS上实现引导UI"中讨论的一些图像效果.为了在会话的源代码中产生模糊效果,UIImage
通过导入UIKit的类别扩展,如下所示:
@import UIKit;
Run Code Online (Sandbox Code Playgroud)
我想我在另一个会话视频中看到了一些相关内容,但我找不到它.我正在寻找有关何时使用此信息的任何背景信息.它只能用于Apple框架吗?使用此编译器指令的好处是否应该返回并更新旧代码?
我目前在Swift编码,我有一个错误:
没有这样的模块社交
但我不明白,因为模块在我的项目中,在"链接框架和库"和"嵌入式二进制文件"中声明.
框架在Objective-C中,所以我为它编写了一个Bridge Header.
请问,我如何让Xcode识别框架?
我有一个现有的iOS应用程序,并希望添加一大块代码,我一直在开发另一个项目,以方便测试.新的块基本上处理将图像保存到各种共享服务等.因为共享代码需要大量的测试和未来的更新,我想知道将代码块合并到我现有的应用程序中的最佳方法是什么.
我不知道它应该是静态库,动态库还是框架,老实说,我不确定区别是什么,或者我应该如何去做它并在Xcode中设置它.
我所知道的是,我需要/想要为共享代码保留单独的测试和更新应用程序,并让主应用程序使用它.
如果你还不能说,我不是一个git wiz.我只是一个简单的单人开发人员.
任何帮助或方向将不胜感激.谢谢!
什么是伞头?有什么用?我收到了一个警告,如下所示.这是什么意思?
<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) 我正在尝试使用带有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>
.这条线不会引发错误,但似乎最终没有任何区别.
提前致谢.如果您需要更多信息,请告诉我.
我正在尝试导入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文件中:
迅速
Run Code Online (Sandbox Code Playgroud)import FrameworkName
您可以使用以下语法将框架导入到不同目标中的任何Objective-C .m文件中:
Objective-C的
Run Code Online (Sandbox Code Playgroud)@import FrameworkName;
我myFramework
使用Xcode 5 创建.Xcode 5没有"定义模块"构建设置.
问题出在哪儿?
当我尝试在Xcode 6.3中构建CKCountdownButton作为框架时,它会抱怨
警告:找不到目标'CKCountdownButton'的伞头,将不会生成模块图
然后,当我在其他项目中导入此框架时,它失败了没有这样的模块'CKCountdownButton'
我想在swift中使用我的webrtc .a静态库.你能帮帮忙吗?我读过你不能在swift中使用静态库,这是真的吗?
我正在寻找Xcode中目标成员资格的示例.我对它的确切含义感到有些困惑.例如,我有两个不同的目标成员资格.myApp和myAppTests.如果我指定一个文件(比如myAppFile.h)作为myAppTests的一部分而不是myApp,这意味着什么?我的应用程序构建和运行时会发生什么?
谢谢
我的目标是创建一个包含Swift和Objective-C的iOS框架,我可以在我的开发项目中使用它.该框架的本质是框架本身正在发展.因此,每次使用此框架构建项目时都很重要(我将使用"使用"项目的框架称为项目缺乏更好的术语),我想确保框架本身重新构建.我希望这是一个框架,因为我有一些使用应用程序,我希望使用相同的框架代码.我已经为今天的大部分时间而苦苦挣扎,并浪费了大量时间在本来应该做的事情上,至少在我的想法中,更容易.所以,我会分享我的过程.