从今天开始:
学习一门新门的语言Swift,之前常用的语言 java 、object—c;相信 学起swift来,也会很快的;
之前看了大量的文章,结合大神的,外加自己理解,来说一说 在xcode里swift、与object-c是如何调用;
之前看了很多文章,大家直接上来就是教你怎么做,对于我总想知道为啥的人来说,总感觉解决不了我的问题;现在我把我的理解来分享一下,希望可以让大家很快从object_c的基础上过度到swift上来;
首先要理清楚:oc与 swift 的相互调用 ;不再是在同一个文件里面混编;object-c与c,c++可以很好的实现混编;但是 oc与swift是相互独立的;oc与swfit的语法类似,确是完全不一样的,它们是两种语言;xcode 能够很好的将这两种语言做映射 ,但不代表你可以在oc中写swif,在swif写oc;
接着:oc与swift的相互调用,指的是,在oc中你可以用 swift写好的类,也可以说,你就把swift 当成oc,在oc里使用;反之一样;
它俩的映射过成交给头文件去处理;在oc工程里,在你创建swfit文件时,xcode就会提示你创建头文件;例如:TestSwift-Bridging-Header.h
接下来使用一个例子来说明;object-c 与swift 相互调用
a、创建一个ios工程 语言用object-c ,这个应用很简单,使用uiwebview组件加载了h5页面;默认背景是白色;用swift,让其变为蓝色;(功能没有意义只是为了测试一下)
b、创建一个test.swift ,默认生成Study-Bridging-Header.h
定义一个方法:viewcontroller的背景为蓝色
参数:UIviewControler
返回值:无 (swift的语法后面慢慢讲)
功能:设置背景为蓝色
import Foundation//引入头文件(之前的框架都可用)
//@objc 说明这个类可以 在oc中使用
@objc class Test:NSObject {
//func 申明这是个方法、函数 setBackColor:名称
//params(参数):UIViewController(参数类型)
func setBackColor(params:UIViewController) {
params.view.backgroundColor=UIColor.blueColor();//功能
}}
大家有没有发现,在这个swift 类中,我们用到了我们在object-c中熟悉的;这里想要其生效
需要在Study-Bridging-Header.h中 加上
#import "ViewController.h"
这里我们是不是就用到了oc写的类;
c、在ViewController.m 使用 swift
引入头文件“#import"Study-swift.h" Study 为工程名,后面固定不变
//调用swift
Test *test= [[Test alloc]init];
[test setBackColor:self];
d、最后结果背景变蓝;
总结:
在oc 中使用 swift 需要 引入头文件“#import"Study-swift.h"
在swift 中使用 oc需要 在Study-Bridging-Header.h引入你用到的类的头文件