iOS開發——混編Swift篇&OC移植為swift

來源:互聯網
上載者:User

標籤:

將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)idx2 {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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.