写一个简单程式来比较 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的mutable
与immitable
,在Switft中使用了var
与let
,让人更容易了解它的用途,根据这种易用度,让我想到以前的Basic时代,只要是学生,人人都应该会Basic写程式。如果一个程式语言容易使用的情况下,一方面在快速开发有帮助,另一方面可以降低学习曲线,我想在不久的将来,不光是中小学生会玩乐高机器人而已,而是Swift也可能成为中小学生会的程式语言之一。