使用Swift开发React Native组件(一)
使用Swift开发React Native组件(一)
系列导航第一章-IOS开发基础入门 本章内容介绍因为本系列的目标群体是和笔者一样有前端经验,IOS开发零经验的同学。所以本章讲的东西暂时和RN无关,主要介绍开发工具、学习资料等基础辅助型知识。 案例GitHubhttps://github.com/mtyang/Rea... OC还要学吗个人感觉OC还是要学的,目前市场上很多组件还是以OC为主,有时候为了学习思路还是要看看别人的代码,但是不必像Swift一样深入,入门即可,介绍这篇文章 https://github.com/qinjx/30mi... OC TO Swift这个工具是将OC代码翻译成Swift,我也是开了下脑洞google一下发现的,这非常有助于我们理解一些OC的代码。
学习资料基础入门
语法入门有中文PDF和英文原文档Swift入门 中文 英文原档 UIkit这个类将是我们学习的重点,后面都将用它来构建我们的应用界面,介绍另外一本入门书籍这是一本弯弯同学写的,版本虽然是2.0,但是有xcode这种强大的编辑器会提醒你最新的语法是什么,除了一些关键字翻译的和我们的习惯不一致,其他都讲的不错。 Playground测试JS代码我们要么用node执行测试文件,要么直接在console中直接测试,在Xcode也提供了这样的场所,这在我们一边看文档一边学习时特别有帮助。
Hello worldStoryboard在IOS的世界中有两种构建界面的方式,一种编码方式,可以理解为在JS中用 界面介绍创建项目 根据上面的引导就完成了项目的创建,
两个 Storyboard注意看上图中左边文件中有两个Storyboard类型的文件。
Say hello我们选中
接下来就很简单了,我们双击Label标签然后输入
CocoaPods简介当我们开发应用时必定会用到第三方库,以前我们都是直接下载源文件到项目中,最后有了node和npm,生活质量瞬间提高了很多,那么在ios中,CocoaPods就是iOS最常用最有名的类库管理器了。 安装在终端中依次执行下面的命令
第一条命令是改变文件源,第二个则是cocoapods,等待一段时间后看见如下字样说明安装成功。
注意:也有可能不是这个提醒,所以我们验证一下。
如果出现版本号明细就说明我们已经安装成功了。 使用cocoapods的配置和我们npm稍有差异,不过也很简单,首先进入我们的项目执行命令。 我们来看一下生成好的podfile文件。 # Uncomment this line to define a global platform for your project # platform :ios,'9.0' target 'iwtest' do # Uncomment this line if you're using Swift or would like to use dynamic frameworks # use_frameworks! # Pods for iwtest target 'iwtestTests' do inherit! :search_paths # Pods for testing end target 'iwtestUITests' do inherit! :search_paths # Pods for testing end end 现在我们要安装一个第三方的类库 编辑
# 定式部分 source 'https://github.com/CocoaPods/Specs.git' platform :ios,'10.0' use_frameworks! target 'testTodo' do # 需要引入的类库写到这里 pod 'SnapKit','~> 3.2.0' # Pods for testTodo target 'testTodoTests' do inherit! :search_paths # Pods for testing end target 'testTodoUITests' do inherit! :search_paths # Pods for testing end end 退出编辑模式后执行命令进行安装 OK,如果不出问题我们就发现类库已经被安装了,这个时候还有一个小细节,我们如果使用了cocoapods来管理类库,它会帮我们在项目中创建一个 OC Swift 混编这一节就到了我们要讲的最重要的一节,众所周知RN是用OC编写的,那如何才能是用Swift来编写RN的组件呢,答案就是IOS原生就支持OC和Swift混编应用。 无论是在Swift的项目中新建OC文件还是在OC的项目中新建Swift文件,Xcode都会有下面的一个提示。
询问是否创建一个bridge文件,这个文件就是混编的关键,选择 Create之后会发现工程中多出了一个
如上图,我在OC的项目中创建了一个
大概意思就是告诉我们,这个文件主要的功能是将OC的文件接口放在一起然后供Swift文件调用,红圈标注出来的意思是如果你想自己手动创建一个bridge文件也是可以的,但是需要做相应的配置。 在OC中调用Swift首先我们定义一个Swift类,定义一个sayHello函数,如果它被调用的话,控制台会打印出 import Foundation @objc(MySwift) class MySwift:NSObject { func sayHello(){ print("Hello,Swift") } } 然后我们编辑 #import "ViewController.h" #import "iwtest-Swift.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; MySwift *mySwift = [[MySwift alloc] init]; [swiftObject log]; // Do any additional setup after loading the view,typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 先执行
现在我们来解释一下这其中的关键,总共有两处。
在Swift中调用OC我们定义一个OC类,首先创建头文件 #import <foundation/Foundation.h> @interface Myoc : NSObject {} + (void) sayHello; @end 再创建实现文件 #import <Foundation/Foundation.h> #import "Myoc.h" @implementation Myoc +(void) sayHello { NSLog(@"Hello,OC"); } @end 同样的,我们创建了一个 func sayHello(){ print("Hello,Swift") Myoc.sayHello() } 如果一切正常的话控制台会先后打印 #import "Myoc.h" 我们将头文件引入后再次编译发现没有报错,运行之后结果和预期相符。
结束语OC的一些语法确实很纠结,我后面后抽空把我理解到的,也是避不开的总结一下再编辑到这章里,希望对大家有用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |