首页 > 编程语言 > 详细

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

时间:2015-09-25 16:23:25      阅读:141      评论:0      收藏:0      [点我收藏+]
相比于Objective-C,Swift语言更加简练。有时我们需要把原来写的一些Objective-C代码转换成Swift,下面总结了各种常见的情况。

1,构造函数的迁移
Objective-C为:
1
2
HanggeMenuItem *starMenuItem1 = [[HanggeMenuItem alloc] initWithImage:storyMenuItemImage
                                                        highlightedContentImage:nil];
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
2
3
4
5
6
7
- (void)awesomeMenu:(AwesomeMenu *)menu didSelectIndex:(NSInteger)idx
{
    NSLog(@"Selected the index : %d",idx);
}
- (void)awesomeMenuDidFinishAnimationClose:(AwesomeMenu *)menu {
    NSLog(@"Menu was closed!");
}
Swift:
1
2
3
4
5
6
7
8
func awesomeMenu(menu:AwesomeMenu, idx:Int)
{
     println("Selected the index : %d",idx)
}
func awesomeMenuDidFinishAnimationClose(menu:AwesomeMenu)
{
     println("Menu was closed!")
}

5,检测代理是否实现某个方法
Objective-C中协议继承自NSObjectProtocol协议,如果协议需要回调和检测某个代理是否实现了某个方法,使用NSObjectProtocol的respondsToSelector方法:
1
2
3
if(self.delegate.respondsToSelector(Selector("HanggeSwiftMenuWillAnimateClose:"))){
    self.delegate.HanggeSwiftMenuWillAnimateClose(self)
}
而在Swift中使用?即可
1
self.delegate?.HanggeSwiftMenuWillAnimateClose(self)

(附:在线代码转换工具)

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

原文:http://www.cnblogs.com/Free-Thinker/p/4838380.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!