寫一個簡單程式來比較 Swift 與 Objective-C

寫一個簡單程式來比較 Swift 與 Objective-C

WWDC 2014 發表了新一代程式語言 Swift 之後,在使用Xcode 6可以選擇要使用的語言:

可以因應你專案的需要來選擇適合的主要程式語言,目前在Swift中可以與Objective-C混用,這往後再來看看怎麼使用,這次要實作的是同樣的程式,在程式碼中來比較Swift與Objective-C上的差異。

程式畫面

下面為使用Swift為主要語言專案的畫面:

下面為使用Objective-C為主要語言專案的畫面:

兩個程式的功能皆為按下Button後會將上面的Label顯示像圖中的1234的內容

程式內容

Swift

Swift程式檔案被設計為單一檔案,所有需要引用的都在程式最前面使用import將物件引入,他的寫法也非常簡潔,一開始看感覺是很多種語言的混合體,但在使用規則上就沒有Objective-C那麼嚴謹,不過因為很多例外情況已經被Swift給處理,並不需要像Objective-C要自已增加很多例外處里。

import Cocoa

class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet var window: NSWindow

    @IBOutlet var labelText : NSTextField

    @IBAction func btnAction(sender : AnyObject) {
            labelText.stringValue = "1234"
    }


    func applicationDidFinishLaunching(aNotification: NSNotification?) {
        // Insert code here to initialize your application
    }

    func applicationWillTerminate(aNotification: NSNotification?) {
        // Insert code here to tear down your application
    }


}

Objective-C

Objective-C的用法就不用再多說,它與C語言一樣是有程式檔與標頭檔的規則,程式如下:

//AppDelegate.h
#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>


@end

//AppDelegate.m
#import "AppDelegate.h"

@interface AppDelegate ()

@property (weak) IBOutlet NSWindow *window;

- (IBAction)btnAction:(id)sender;

@property (weak) IBOutlet NSTextField *labelText;

@end

@implementation AppDelegate

- (IBAction)btnAction:(id)sender {

    self.labelText.stringValue = @"1234";

}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application
}

- (void)applicationWillTerminate:(NSNotification *)aNotification {
    // Insert code here to tear down your application
}


@end

結語

以上看完可以了解到,同樣功能之下,的確Swift語言在撰寫上與Objecive-C有很大的差異,變數宣告上也與PHP這類的高階語言有類似的意義,不用太在意變數類型,根據使用情形,編譯器就會知道你的變數是字串還是數值類型,下面則是2個語言在Xcode上所看到的結果,將內容並排比較一下:

按下看大圖

Swift往後應該是Apple大力支持下的新一代語言,初步使用結果可以感覺到它集合很多Objective-C的經驗後,將語法弄的更明確,在寫程式上只要專心的寫程式,很多問題都已經在語法建立時都有對應的方法,像是Objective-C的mutableimmitable,在Switft中使用了varlet,讓人更容易了解它的用途,根據這種易用度,讓我想到以前的Basic時代,只要是學生,人人都應該會Basic寫程式。如果一個程式語言容易使用的情況下,一方面在快速開發有幫助,另一方面可以降低學習曲線,我想在不久的將來,不光是中小學生會玩樂高機器人而已,而是Swift也可能成為中小學生會的程式語言之一。

範例程式

參考資料

Swift

The Swift Programming Language