码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-07-23 21:19:29      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

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

相比于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
 

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

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4671520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!