2575


今現在Objective-Cで書かれたコードをSwiftに移植する作業を行っています。

Objective-Cを書いていた身からすると、Objective-Cにおいて

[code]

    @interface AClass : NSObject
    @property (strong) NSNumber *value01;
    @property (readonly) NSNumber *value;
    @end
    
    @implementation AClass
    - (id)value {
        return @(self.value01.integerValue * 2);
    }
    @end
    
[/code]

のようにインターフェイスではreadonlyなプロパティ、内部的には引数なしのメソッドとして実装されているクラスを、 Swiftに移植する場合、

[code]

    class AClass : NSObject
    {
        var value01: Int = 0
        var value: Int {
            return value01 * 2
        }
    }
    
[/code]

と記述することも

[code]

    class AClass : NSObject
    {
        var value01: Int = 0
        func value() -> Int {
            return value01 * 2
        }
    }
    
[/code]

と記述することも意味合い的には同じに思えるのです。

このことについての明確な指針は存在しますか？


CC BY-SA 3.0
2014-12-25T09:38:39.817
2562
2014-12-25T12:09:24.103
2741
question
objective-c swift
Objective-CのプロパティをSwiftに移植するときの指針


前者は、

[code]

    let a = AClass()
    NSLog("%d", a.value)
    
[/code]

と記述できますが、後者は

[code]

    let a = AClass()
    NSLog("%d", a.value())
    
[/code]

とインスタンス変数でなく、メソッドの記述となると思います。

ですので、インスタンス変数のようにアクセスできるプロパティが、内部ではメソッドで実装されていたという感じで見せたいのでしたら、前者の記述が宜しいかと思います。


CC BY-SA 3.0
2014-12-25T12:09:24.103
2575
2014-12-25T12:09:24.103
2970
2562
answer