iOS开发——混编Swift篇&OC移植为swift

将Ojective-C代码移植转换为Swift代码

2015-03-09 15:07发布:yuhang浏览:201

相比于Objective-C,Swift语言更加简练。有时我们需要把原来写的一些Objective-C代码转换成Swift,下面总结了各种常见的情况。

1,构造函数的迁移

Objective-C为:

1 HanggeMenuItem *starMenuItem1 = [[HanggeMenuItem alloc] initWithImage:storyMenuItemImage 2

Swift:

1 var starMenuItem1 = HanggeMenuItem(image:storyMenuItemImage, highlightedContentImage:nil)

2,变量的定义

Objective-C为:

1 UIImage *starImage = [UIImage imageNamed:@"icon-star.png"];

Swift:

1 var starImage = UIImage(named:"icon-star.png")

3,数组

Objective-C为:

1 NSArray *menus = [NSArray arrayWithObjects:starMenuItem1, starMenuItem2, starMenuItem3];

Swift:

1 var menus = NSArray(objects:starMenuItem1, starMenuItem2, starMenuItem3)

4,实现协议的方法

Objective-C为:

1 - (void)awesomeMenu:(AwesomeMenu *)menu didSelectIndex:(NSInteger)idx
2 {
3     NSLog(@"Selected the index : %d",idx);
4 }
5 - (void)awesomeMenuDidFinishAnimationClose:(AwesomeMenu *)menu {
6     NSLog(@"Menu was closed!");
7 }

Swift:

1 func awesomeMenu(menu:AwesomeMenu, idx:Int)
2 {
3      println("Selected the index : %d",idx)
4 }
5 func awesomeMenuDidFinishAnimationClose(menu:AwesomeMenu)
6 {
7      println("Menu was closed!")
8 }

5,检测代理是否实现某个方法

Objective-C中协议继承自NSObjectProtocol协议,如果协议需要回调和检测某个代理是否实现了某个方法,使用NSObjectProtocol的respondsToSelector方法:

1 if(self.delegate.respondsToSelector(Selector("HanggeSwiftMenuWillAnimateClose:"))){
2     self.delegate.HanggeSwiftMenuWillAnimateClose(self)
3 }

而在Swift中使用?即可

1 self.delegate?.HanggeSwiftMenuWillAnimateClose(self)

当然如果有些东西你不想写,或者对OC有一定的经验,那么推荐你使用,优才网的一个转换工具,虽然目前还有一些bug,但是一般的转换都可以实现:http://www.ucai.cn/tools/oc2swift

时间: 2024-12-28 21:55:05

iOS开发——混编Swift篇&OC移植为swift的相关文章

iOS开发——图形与动画篇OC篇& POP简单介绍及使用

POP简单介绍及使用 前言 动画在APP开发过程中 大家多多少少都会接触到 而且随着ios7的扁平化风格启用之后 越来越多的APP开始尝试加入各种绚丽的动画交互效果以增加APP的用户体验(当然 还是以国外的APP居多) 有过相关开发经验的同学肯定知道在iOS中 动画相关的部分都是基于Core Animation 但是今天我们不讨论Core Animation 今天的主角是POP -来自于Facebook的动画引擎(其实我不喜欢把POP定义为动画引擎 我愿意称它为函数发生器) 介绍 官方地址 ht

iOS开发——图形与动画篇OC篇&图层基本上动画

图层的一些基本动画效果 #define kRadianToDegrees (radian) (radian * 180.0) / (M_PI) //闪烁 [self.testView.layer addAnimation:[self opacityForever_Animation:0.5] forKey:nil]; //移动 [self.testView.layer addAnimation:[self duration:3 move:[NSNumber numberWithInteger:2

iOS开发学习笔记:基础篇

iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境),Xcode是一个集成开发环境,包括了编辑器.调试.模拟器等等一系列方便开发和部署的工具,iOS SDK则是开发应用所必需,不同的SDK分别对应不同的iOS版本或设备,通常我们需要下载多个iOS SDK以确保我们开发的程序能够在不同版本的iOS上正常运行. 创建新工程 Xcode提供了很多种工程模

【iOS开发每日小笔记(六)】Swift语言学习的入门随想

这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.该分类的文章,内容涉及的知识点可能是很简单的.或是用很短代码片段就能实现的,但在我看来它们可能会给用户体验.代码效率得到一些提升,或是之前自己没有接触过的技术,很开心的学到了,放在这里得瑟一下.其实,90%的作用是帮助自己回顾.记忆.复习.如果看官觉得太easy,太碎片,则可以有两个选择:1,移步[iOS探究]分类,对那里的文章进行斧正:2,在本文的评论

IOS开发入门教程-总结篇-写给狂热的编程爱好者们

程序发轻狂,代码阑珊,苹果开发安卓狂!——写给狂热的编程爱好者们 写在前面的话 学习iOS应用程序开发已有一段时间,最近稍微闲下来了,正好也想记录一下前阶段的整个学习过程.索性就从最基础的开始,一步一步记录一个最简单的 iOS应用从创建到运行的全过程,其中会穿插很多相关知识或是遇到过的问题.其实算不上教程,但希望能够帮助更多的开发爱好者更快.更好的入门. iOS开发环境简述 最友好,最现实,也是最方便的开发环境就是在Mac系统中安装Xcode进行开发.原因在于:第一,开发工具(Xcode)限制.

iOS开发系列-Block本质篇

概述 在iOS开发中Block使用比较广泛,对于使用以及一些常规的技术点这里不再赘述,主要利用C++角度分析Block内部数据底层实现,解开开发中为什么这样编写代码解决问题. Block本质 Block本质也是一个OC对象,内部也有isa指针,最终继承NSObject.它是封装了函数调用以及函数调用环境的OC对象. 原文地址:https://www.cnblogs.com/CoderHong/p/10055004.html

iOS开发日记31-Block终极篇

今天博主有一个Block的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 1.什么是Block      Block是一个C级别的语法以及运行时的一个特性,和标准C中的函数(函数指针)类似,但是其运行需要编译器和运行时支持,从ios4.0开始就很好的支持Block. 2.在iOS开发中,什么情况下使用Block      Block除了能够定义参数列表.返回类型外,还能够获取被定义时的词法范围内的状态(比如局部变量),并且在一定条件下(比如使用__block变量)能够修改这些状态.此

swiftDay01笔记 --swift和OC的不同点 && swift的基础语法

1.创建对象 带圆括号 * OC:      alloc initWithXXX 方法 * Swift:   (xxx:) //OC : //UIView *view = [UIView alloc]init]; //Swift : let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 2.方法调用   用点 * OC:     [UIColor redColor]; * Swift    UIColor.re

转载 【iOS开发】网页JS与OC交互(JavaScriptCore) OC ----->JS

目标 本文介绍利用苹果在iOS7时发布的JavaScriptCore.framework框架进行js与OC的交互.我们想要达到的目标是: OC调用网页上的js方法 网页js调用APP中的OC方法 JavaSciptCore.framework框架介绍 JavaScriptCore是webkit的一个重要组成部分,主要是对js进行解析和提供执行环境.具体介绍请看这篇简书的文章:JavaScriptCore 使用 准备环境 创建一个名为JS与OC交互Demo的iOS工程.然后在storyboard添