1. susieyy

    No comment

    susieyy
Changes in body
Source | HTML | Preview

Beta4がリリースされたので、変更点をいくつかピックアップしました。

待望のアクセスコントロールができるようになった

public, internal, privateのスコープでアクセスコントロールできるようになりました。

アクセス修飾子
public 定義されているターゲット外からもアクセスすることができる
internal 定義されているターゲット内からアクセスすることができる
private 定義されているソースファイル内からアクセスすることができる

記載を処略した場合はinternalがデフォルトで適用されます。

// An example class in a framework target.
public class ListItem: NSObject {
    public var text: String
    public var isComplete: Bool
    // Readable throughout the module, but only writeable from
    // within this file.
    private(set) var UUID: NSUUID
    public init(text: String, completed: Bool, UUID: NSUUID) {
        self.text = text
        self.isComplete = completed
        self.UUID = UUID
    }
    func refreshIdentity() {
        self.UUID = NSUUID()
    }
    // Must be public because it overrides a public method and is
    itself
    // part of a public type.
    public override func isEqual(object: AnyObject?) -> Bool {
        if let item = object as? ListItem {
            return self.UUID == item.UUID 
        } 
        return false 
    } 
}

参考 Xcode Release Notes

Swift Enables Access Control
Swift access control has three access levels:
• private entities can only be accessed from within the source file where they are defined.
• internal entities can be accessed anywhere within the target where they are defined.
• public entities can be accessed from anywhere within the target and from any other context
that imports the current target’s module.

@IBOutletのプロパティ定義はオプショナルが必須になった

@IBOutletのプロパティが軒並みエラーになります。

WTDCommentCell_swift.jpg

オプショナルな設定にしてあげます。

WTDCommentCell_swift.jpg

@IBOutletオプショナルなプロパティを利用しているところはアンラップします。なプロパティを利用しているところは、値(参照)がセットされていると思うのでアンラップにしました。
オプショナルバインディングで記述するほうがより丁寧なのかもしれません。

WTDCommentCell_swift.jpg

参考 Xcode Release Notes

Known issues in Xcode 6 beta 4
Swift
• You cannot conditionally assign to a property of an optional object. (16922562)

配列の要素の型指定の記法はBeta3以上の記法が必須になった

以下はBeta2までの記法で、Beta3から記法が変わりましたがエラーにはならずワーニングでしたが、Beta4からは必須になりました。

Edges_swift.jpg

Edges_swift.jpg

ランドマークアノテーションをサポート

以下の記法が利用できるようになりました。Xcodeのジャンプバーから対象に

//MARK:
//TODO:
//FIXME

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

    //MARK: UITableViewDelegate

    override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
        ...
    }

全画面_2014_07_22_12_02.jpg

参考 Xcode Release Notes

Landmarks
Xcode now supports //MARK:, //TODO: and //FIXME landmarks to annotate your code and
lists them in the jump bar. (14768427)

StoryboardでUIScrollView系(UITableViewなど)を利用すると出るワーニングが消えた

StoryboardでAutoLayoutを使用時にUIScrollView系を利用すると、コンストレイントのワーニングが常に出ており取り除くこともできなかったのですが、このワーニングがでなくなりました。

Beta3まで以下のようなワーニングが出ていました。

Main_storyboard_—_Edited.jpg

Main_storyboard_—_Edited.jpg