ラベル Swift の投稿を表示しています。 すべての投稿を表示
ラベル Swift の投稿を表示しています。 すべての投稿を表示

2014年7月10日木曜日

Swift:ViewController.swiftの中身

前回の「AppDelegate.swift」に続いて、今回は「ViewController.swift」の中身を見ていきたいと思います。

--------------------------------------------------------------------------
//
//  ViewController.swift
//  HelloSwift
//
//  Created by  on 2014/07/01.
//  Copyright (c) 2014 . All rights reserved.
//

import UIKit

class ViewController: UIViewController {
                            
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
--------------------------------------------------------------------------
えっ!、これで終わりって思う程の短さです。

継承元の「UIViewControllerクラスの2つのメソッドをオーバーライドしています。

ビューへ「Hello World!」を描画するなら「viewDidLoad()」メソッドへ記述することになりそうです。

描画先オブジェクトとして「UILabel」をViewへ配置してOutlet定義した変数へ繋げれば指定した文字列を描画できそうな感じ。。。

「Hello World!」と描画させるためのコードは以下の通りです。
--------------------------------------------------------------------------
//
//  ViewController.swift
//  HelloSwift
//
//  Created by  on 2014/07/01.
//  Copyright (c) 2014 . All rights reserved.
//

import UIKit

class ViewController: UIViewController {
    
    // Outlet変数宣言
    @IBOutlet var lblHello : UILabel
    
    // オーバーライドメソッド
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        // Hello World!! 描画
        lblHello.text = "Hello World!"
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
--------------------------------------------------------------------------


Outlet宣言でUILabelオブジェクト「lblHello」を宣言しておいて、Main.storyboardファイルにてビュー画面にUILabelオブジェクトを配置して「lblHello」アウトレットと接続します。

あとはviewDidLoad()オーバーライドメソッド内で「Hello World!」文字列を設定すればiPhoneシミュレーター画面に「Hello World!」と描画されました。
「Hello World!」と描画するだけの超簡単なプログラムでしたが如何だったでしょうか?
私は思っていたよりかは違和感なくコーディングすることが出来ました。

ベータ版のせいかコード記入時のコードアシストが利かず若干戸惑いましたが、ちゃんとアシストされればそんなに困ることなくコーディングできそうですね〜。

あとはSwift言語独自の記述方法やらコーディングスタイルに慣れていこうと思います。

ではまた〜

2014年7月9日水曜日

Swift:AppDelegate.swiftの中身

前回の続き。。。

今回は「AppDelegate.swift」の中身を見ていきたいと思います。

--------------------------------------------------------------------------

//
//  AppDelegate.swift
//  HelloSwift
//
//  Created by  on 2014/07/01.
//  Copyright (c) 2014 . All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
                            
    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
        // Override point for customization after application launch.
        return true
    }

    func applicationWillResignActive(application: UIApplication) {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    }

    func applicationDidEnterBackground(application: UIApplication) {
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }

    func applicationWillEnterForeground(application: UIApplication) {
        // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
    }

    func applicationDidBecomeActive(application: UIApplication) {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    }

    func applicationWillTerminate(application: UIApplication) {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }


}

--------------------------------------------------------------------------
全部で45行で見た目も短いし簡潔な感じです。

import文の後の「@UIApplicationMain」はObjective-C言語ではmain()関数内に記述していたプリミティブなんでSwiftになってmain()関数が無くなった代わりに必要となる記述なのでしょうね。

次にインスタンス変数の記述部分では。。。

(Objective-C言語での記述)
    UIWindow* window;

(Swift言語での記述)
    var window: UIWindow?

UIWindowクラスの変数windowが宣言されています。
C言語の分かりにくい点であったポインタが無くなったんでクラスインスタンスを入れる変数に必要だった「*」(ポインター)マークは記述不要になっています。

かわりに変な位置に「?」がありますがこれは結構重要で「?」マークを消すとコンパイルエラーになります。

Swift言語の特徴に「変数の初期化の強制」がありますので、初期化していないとコンパイル時に怒られます。
 └実際には「?」マークを消した瞬間にエラーとなります。

逆にこのwindow変数のように実行時にnibファイルが読み込まれた時に初めて生成されたUIWindowオブジェクト値が設定されるような変数ではnil値(初期化しない許可)を許可しておかないとコンパイルを通らないので、このようにnil値を許容させたい変数には宣言時に「?」マークを付与する必要があります。

やや面倒な感じもしますが、こうする事で変数の初期化を強制し想定外のバグやクラッシュを未然に防いでいるんでしょうね。

あとの行は見慣れたUIApplicationDelegateのデリゲートメソッド定義が生成されていますので、それぞれデリゲート内に必要な機能をコーディングすることになります。

クラス、メソッド、変数定義等、Swift言語独自のコーディングスタイルになっているので違和感はあるものの見慣れたメソッドとか変わってない点も多々あるなぁ〜って印象でしょうか。。。

ではまた〜

2014年7月1日火曜日

Swift:なにはともあれHello World!!

では早速Swift言語を使ってアプリを作成していきたいと思います。

最初のアプリは「Hello World!!」を描画するのがお決まりですので、まずはそれに倣って最も簡単なアプリとしてHelloWorld表示アプリを作っていきます。

とは言え、プログラムロジックは無いのと同じですのでSwift言語での変更点を見ていくのが目的になると思います。

-------------------------------------------------------------------------------------------------------------------


1.Xcode相違点

  • Xcode6-beta2の操作性はXcode5.1.1と殆ど変わりません。
  • 今までのXcode3 → Xcode4 → Xcode5アップグレードでは機能面で大きな違いがありましたが、それと比べるとXcode5 → Xcode6での変化は良く良く見ないと違いを感じる事ができない程少ないと思います。(メニューも一緒で違いを見つけれない。。。)
  • Swift言語が追加されたのが一番の変更点でしょうか。。。


2.新規プロジェクトの作成

  • 「Create a new Xcode project」をクリックするか、Fileメニューから「New → Project...」を選択して新規プロジェクトダイアログを開きます。
  • 上記画面の右側には過去に開いたプロジェクト一覧が表示されますが、ここにはXcode5のプロジェクトと混在して表示されます。
    └間違って開くとどうなるかは試していません。。。(^^ゞ
  •  最初のHelloWorldアプリなんで一番シンプルなアプリテンプレートを選択。
    └iOS:Application → Single View Application を選択して「Next」クリック。
  • Project Name:HelloSwift
  • Language:Swift言語を選択
  • Devices:iPhoneを選択
  • 「Next」クリック後、プロジェクト保存先フォルダを指定してプロジェクトを作成します。


3.ファイル構成

  • プロジェクト作成して生成されるファイル構成は上図の通りですが一見してファイル数が減ってスッキリしている印象です。
  • Swift言語を選択したんで2つのソースファイルの拡張子が「swift」になっているのが分かります。
  • ファイル数が減っている要因としてはヘッダーファイル(xxx.h)が無くなっています。
    └ヘッダーファイルが無くなると宣言と実装は同じswiftファイルで記述するのでしょうか。。。
  • C言語じゃなくなったんでmain関数が必要無くなり、main.mファイルも無くなってますね。


長くなってきましたので、個々のswiftファイルの中身は次記事で詳細に見て行きたいと思います。

ではまた〜

Swift:Xcode 6-Beta2アプリケーション準備

Swift言語を実際に使って開発するには「Xcode 6-Beta2」を使用する必要があります。

Xcode自体は無料提供されていますが残念ながら「Xcode 6-Beta2」ベータ版についてはアップル社のDeveloperプログラムを購入している人しかダウンロードできません。

どうしても今すぐにSwift言語を試したい人はDeveloperプログラム購入を検討するかないと思います。 そうじゃない人はiOS8リリース時期まで待ちましょう。 その時期にはXcodeのbetaも取れて無償ダウンロード出来るのではないでしょうか。。。

-----------------------------------------------------------------------------------------------------------

1.「Xcode 6-Beta2」ダウンロード

  • Apple Developerサイトに入り、「iOS Dev Center」内で「iOS 8 beta 2」タブをクリックして、「Xcode 6-Beta2」をダウンロードします。







2.「Xcode 6-Beta2」インストール

  • ダウンロードしたファイルをマウントすると「Xcode 6-Beta2」がありますので、Applicationフォルダへコピーします。(通常のコピーインストールと同じ)
  • 「LaunchPad」画面には既存Xcodeとは別の名前で共存できます。
  • 初回起動時はコンポーネントインストールが行われます。(少々時間が掛かる)


3.Xcode共存について

  • 既存Xcodeアプリケーションとは別の名前「Xcode 6-Beta2」・アイコンで存在しますので共存は可能のようです。
  • 1つのOSX内にXcode共存した状態でもそれぞれの動作は特に問題は無い様ですし、既存Xcode 5.1.1でアプリアーカイブ→アプリ申請まで行いましたが特に問題はありませんでした。(今のところは特に影響・問題は発生していません)
  • しかし、オープン中のプロジェクトとかプレファレンス情報が共有されている部分もありますし、Terminalコマンド等のコマンドラインツールの検証までは行っておりませんのでXcode共存状態での利用は自己責任でお願いします。
  • 万が一に備えて、外付けUSBディスク上へOSX Mavericks環境を復元コピーして外部ディスクからMavericksを起動できるようにしました。(メイン利用OSX環境を次期OSX Yosemiteへアップデートする事前準備も兼ねて複製環境の構築)

ではまた〜

2014年6月28日土曜日

Swift始めました。

WWDC2014で次世代のプログラミング言語「Swift」が発表されました。

「Swift」は日本語訳すると「迅速」とかになりますから「迅速な動作」とか「迅速な開発」に掛けての名前なんでしょうか。。。

少し、Appleらしくないネーミングのような気がしますねぇ〜(^^ゞ

名前はさておき、言語としてみるとモダンな機能を組み込みつつ現行のObjective-C言語での問題点をクリアしているので、アプリの安定性向上が期待できると思います。

これだけでもSwift言語に移行する大きな理由付けになりそうです。

Objective-C言語からの脱却を決断したAppleが満を持して投入する新言語ですし今後のアップル開発でのメインストリームになると思われる言語ですので私も早速始めてみようと思います。

<Swift言語の情報源>
1.Swift言語仕様
 ・Swift (プログラミング言語) - Wikipedia … 日本語翻訳で読み易い

2.Swiftサンプルコード
 ・Google検索:「swift サンプルコード」で検索
 ・毎日のようにサンプルやらライブラリやらが増えています。(皆さん、仕事が速いw)

ではまた〜