swift开发指南

所需积分/C币:2 2018-12-29 21:02:54 9.28MB PDF
收藏 收藏
举报

Swift调用Objective-C需要一个名为“<工程名>-Bridging-Header.h”的桥接头文件,如图18-1 所示。桥接头文件的作用是为Swift调用Objective-C对象搭建一个桥,它的命名必须是“<工程名>- Bridging-Header.h”,我们需要在桥接头文件中引入Objective-C头文件,而且桥接头文件是需要管 理和维护的。
228第18章从 Objective-C到 Swift 我们可以按照提示并结合自己的实际情况和需要输入相关内容。下面简要说明一下图183-3中 的工程选项 口 Product name:工程名。 Organization name:组织名。 口 Organization Identifier:组织标识(很重要)。一般情况下,这里输入的是组织名或公司的 域名(如 net.cocoagame),类似于Java中的包命名。 口 Bundle identifier:捆绑标识符(很重要)。该标识符由 Product name+ Organization Identifier 构成。因为在 App store上发布应用的时候会用到它,所以它的命名不可重复。 口 Language:开发语言选择。在这里我们可以选择开发应用所使用的语言,在 Xcode6中可 以选择 Swift和 Objective-C 相关工程选项设置完成后,单击¨Next”按钮,进入下一级界面。根据提示选择存放文件的 位置,然后单击“ Create”按钮,出现如图18-4所示的界面。 le O En Helloworld. xcodeproj Helloworld: Ready at下午12:07 Build Settings Build Phases Build F ldentity and Type PROJECT NameHelloworld Levels smain.swift A Helloworld LocationAbsolute TARGETS V Deployment Full Path World. cod Strip Linked Product Project Document Project Format Xcode 3.2-compatible Product Name 口{ V User-Defined View Controller- A controller Setting hat supports the fundamental view-management model in ioS. VMTL ENABLE DEBUG INFO controller that manages a table view 图18-4新创建的工程 在左边的导航栏中打开main. swift文件,会看到如图18-5所示的代码界面,我们可以在这里编 写Swi代码 18.2 Swift调用 Objective-C229 Helloworld: Ready Today at下午12:07 目凵E 白RQA◇D⊙14|幽Wh) Helloworld) main.swift) NoSclection ei target, oS XSDK 10.10 1// dentity and Type / main SwiFE me main.swift 3 // HelloWorld Type Default-Swift Source i b□ Producrs 51/ Created by tony macmini on Full Path /Users/tonymacmini 14-7-24 Helloworld main. swift o 6// Copyrigh〔c)2811年 Target Membership tonyguan, All rights VEHelloworld reserved 7/ import Foundation mt supports the fundamental view-management model in iOS. 11 println Hello, World!") navigation through 2 hierarchy controller that manages a table 图18-5代码界面 1822在Swt工程中添加 Objective-C类 我们刚刚创建了 Swift的工程,还需要调用其他 Objective-C类来实现某些功能,需要添加 Objective-C类到Swif工程中。具体过程是,右键选择 Hello world组,然后选择菜单中的“New File..”弹出新建文件模板对话框,如图18-6所示,选择“OSX→丶 Source-→ Cocoa class” Choose a template for your new file 18 User Interface Core da Test Case class Swift file Source User Interface Objective-C Header File C File C++ file Core data A Cocoa class cancel Previous 图18-6新建文件模板 接着单击“Next”按钮,随即出现如图18-7所示的界面。在Clas中输入“ Obj cobject”,在 anguage中选择 Objective-C,其他的选项保持默认值就可以了。 230第18章从 Objective-C到 Swift Choose options for your new fille: Subclass of: NSObject Also create XIB file for user interface Language:Objective-C anc e Ious Next 图18-7新建 Objective-C类 相关选项设置完成后,单击“Next”按钮,进入保存文件界面,根据提示选择存放文件的位 置,然后单击“ Create”按钮创建 Objective-C类。如果是第一次创建 Objective-C类,那么保存完 成的时候,code会提示我们是否添加桥接头文件,如图18-8所示,弹出一个对话框,我们应该 选择“Yes”,之后会在工程中创建桥接头文件 Hello world- Bridging- Header. h Would you like to configure an objective C bridging header? Adding this file to Helloworld will create a mixed Swift and Objective-C target. Would you like xcode t auto matically configure a bridging header to enable classes to be accessed by both languages? Cancel No Yt 图18-8创建桥接头文件 18.2.3调用代码 Objective-C的 Obj Cobject创建完成后,我们会在 Xcode工程中看到新增加的两个文件 Objcobject h和 ObjCobject m。本书并不打算过多地介绍 Objective-C语言,但为了更好地理解 Swift 与 Objective-C的互相调用,我们还是简单地解释一下 Objective-C代码。 Obj( Object. h代码如下: #import Foundation /Foundation.h> @interface ObjCobject NSObject 18.2 Swift调用 Objective-C231 (NSString*)sayHello: (NSString*)greeting withName:(NSString*)name; ObjCobject h文件是 Objective-C的头文件,我们在这里定义类,声明类的成员变量和方法。 第①行代码引人 Foundation框架的头文件。第②行代码定义类ObjC0 bject,它继承自 NSObject父类。 NSObject类是所有 Objective-C的根类。第③行代码声明了实例方法 sayHello: withAm:,它有两 个参数 greeting和name。 ObjCobject.代码如下 #import ObjCobject h Implementation 0bjcobject (NSString*)sayHello: (NSString *)greeting withName:(NSString*)name NSString *string=[NSStringstringwithFormat: @"Hi, %6@%60 " name, greeting]; return string; 上述代码第①行引入 Obj Cobject:h头文件,第②行代码定义 sayHe1lo: withAm:方法。 下面我们再来看看Swi调用文件main.swif的代码 import foundation varobj: Objcobject objCobject( var hello obj sayHello("Good morning",withName: Tony") 18 println (hello) 上述代码第①行的 import Foundation语句是引入 Foundation框架,类似于 Objective-C的 # import< Foundation/ Foundation.h语句,关于 Foundation框架我们会在下一章介绍。 第②行代码声明并实例化0 bjcobject类的实例obj。0 bjcobject就是 Objective-C里定义的 0 bjcobject。 第③行代码调用 objCobject类的 sayHe1lo: withAm:方法。要注意Swit调用时的方法名和参 数与 Objective-C中该方法的方法名和参数的对应关系,如图18-9所示。 SWif调用代码 /ar hello0= obj. sayHello(" Good morning, withName: " Tony") Objective-CXs -(NSString*)sayHello: (NS String*)greeting with Name: (NSString *)name 图18-9 Objective-C与 Swift调用方法和参数对应关系 232第18章从 Objective-C到 Swift 第④行代码打印输出结果,输出结果如下: Hi, Tony Good morning 要使Swif能够调用 Objective-C,还必须在桥接头文件中引入 Objective-C头文件。 Hello World- Bridging-Header:h代码如下 #import objcobject h 很简单,只有一行代码,如果还有其他的 Objective-C头文件,都需要在此引入。 这样就实现了在Swi中调用 Objective-C代码,我们可以借助于这样的调用充分地利用已有的 Objective-C文件,减少重复编写代码,提供工作效率。 至此,整个工程创建完毕。如图18-10所示,点击左上角的“运行”按钮即可查看运行结果。 口 Memory)=MyMa □品Q△令D⑥ Memory vE l target, OS X SDK 10.10 p□ Products 运行按钮 图18-10运行示例 18.3 Objective-C调用 Swift 如果已经有了一个老的OS应用,它是使用 Objective-C编写的,而它的一些新功能需要采用 Swif来编写,这时就可以从 Objective-C调用 Swift Objective-C调用Swif时不需要桥接头文件,而是需要 Xcode生成的头文件。这种文件由 Xcode 生成,不需要我们维护,对于开发人员也是不可见的。如图18-11所示,它能够将Swif中的类暴 露给 Objective-C,它的命名是:<工程名>- - swift.h。我们需要将该头文件引入到 Objective-C文件中 而且Swi中的类需要声明为@objc。 h文件 m文件 Swift文件 Xcode生成头文件 图18-11 Objective-C调用Swit与 Xcode生成头文件 183 Objective-C调用Swit233 18.3.1创建 Objectⅳve-C工程 为了能够更好地介绍混合搭配调用,我们首先创建一个 Objective-C工程。出于简单考虑,我 们可以创建一个 Mac os x命令行工程。 启动 Xcode6,然后单击File→New→ Project菜单,在打开的 Choose a template for your new project 界面中选择¨OSX→ Application→ Command Line tool”工程模板(如图18-12所示)。 Choose a template for your new project Application Framework Library Command Lin Application This template creates a command-line tool previous Next 图18-12选择工程模板 接着单击“Next'按钮,随即出现如图18-13所示的界面。 Choose options for your new project 18 cancel PreviousNext 图18-13新工程中的选项 在 Product name中输入“ Hello world”,在 Language中选择 Objective-C,其他的项目可以结合 自己的实际情况输入内容。相关的工程选项设置完成后,单击“Next'按钮,后面的步骤与18:.2.1 节类似,在此不再赘述。 创建成功后的界面如图18-14所示,在左边的导航栏中生成了一个 main. m文件。打开 main . m 文件,可以在右边的代码界面中看到它的代码,我们还可以在这里编写代码。 234第18章从 Objective-C到 Swift m mainm P He .Id)- My Mac Helloworld I Today at下午12:13 白gQ△画D6B1|4| HelloWorld)Hbhd)mnm) NoSelection Helloworld 图1 target, OS X SD1010 1/ Identity and Type 2// main. m Type Default-Objective-C.: 3 // HelloWorld Relative to Croup: 57/ Created by tonymacmini on 14-7-24 6 // Copyright (c) 2014 F tonyguan. All rights reserved Target Membership 7/ ■ Helloworld 9 #import <Foundation/Foundation,h> Text Settings Text Encoding[ Default-Unicode(UT. 11 int mainCint argc, const char argiL])t Line Endings Default-OS x/Unix.: 12 leasepool t / insert code here. View Controller=A NSLogCe Hello, World! ) view-management model in ios. return 0; Table View C controller that manages a table +|①回⊙ 图18-14新建的 Objective-C工程 1832在 Objective-C工程中添加Swif类 我们刚刚创建了 Objective-C的工程,需要添加 Swift类到工程中。具体过程是,右键选择 Hello World组,选择菜单中的¨ New file..”弹出新建文件模板对话框。如图18-15所示,选择OS X→ Source→ cocoa class。 Choose a template for your new file Source 己酉 Core data Cocoa Class) Test Case Class Playground Swift file Re C Source User Interface Objective-C Header file C File C++ file Core data File Resource Oth Cocoa class A Cocoa class Cancel J revious Next 图18-15新建文件模板 18.3 Objective-C调用 Swift235 接着单击¨Next”按钮,随即出现如图18-16所示的界面。在 Class I中输入“ Swiftobject',在 Language中选择 Swift,其他的选项保持默认值就可以了 Choose options for your new Subclass object Also create xib file for user interface Language:Swift Cancel Devious l Next 图18-16新建 Swift类 相关选项设置完成后,单击“Next’按钮,进入保存文件界面,根据提示选择存放文件的位 置,然后单击“( Create”按钮创建 Swift类。如果工程中没有桥接头文件,在创建过程中, Xcode 也会提示我们是否添加桥接头文件,可以选择不添加。 18.3.3调用代码 18 Swift的 Swiftobject刨创建完成后,我们会在 Xcode工程中看到新增加的 Swiftobject swi文件。 SwiftObject swift代码如下 import foundation @objc class Swiftobject: NSObject i Func sayHello(greeting: String, withName name String)-> String i var string ="Hi,+ name string + greeting return string 上述代码第①行引入了 Foundation框架的头文件。第②行代码定义 Swiftobject类 Swiftobject类继承自 NSObject类。另外,我们在类前面声明为@objc,@objc所声明的类能够被 Objective-C访问,@objc还可以修饰属性。

...展开详情
试读 12P swift开发指南
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    swift开发指南 2积分/C币 立即下载
    1/12
    swift开发指南第1页
    swift开发指南第2页
    swift开发指南第3页
    swift开发指南第4页

    试读已结束,剩余8页未读...

    2积分/C币 立即下载 >