写一个简单程式来比较 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