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

本文介绍了从Objective-C迁移到Swift的常见代码转换方法,包括构造函数、变量定义、数组处理、协议方法实现及代理方法调用等。通过具体实例对比,帮助开发者快速掌握两种语言之间的差异。
相比于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 )

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

转载于:https://www.cnblogs.com/Free-Thinker/p/4838380.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值