-2

Swift アレイが NSarray にブリッジすることはわかっています。

Swift 配列には、1 つの型のみを含めることができます。

CAGradientLayer の場所を迅速に設定したい。

配列を nil で終了する必要があります。

唯一のオプションは次のとおりです。A.) 最後に float と nil を持つ NSArray オブジェクトを作成しますか? B.) nil を指定できるように、anyObjects の配列を含む迅速な配列を作成しますか?

問題にアプローチする方法について少し混乱しています。

Swift nil != Objective C nil

これは、客観的なcと同じ方法で配列をnilで終了できないことを意味しますか?

ありがとう。

4

1 に答える 1

4

それは非常に簡単です:

let layer = CAGradientLayer()
let locations = [ 0.0, 1.0 ]
layer.locations = locations

Objective-C 配列はnil で終了しないことに注意してください。あなたはおそらく構文に混乱しています

NSArray *locations = [NSArray arrayWithObjects: loc1, loc2, nil];

これにより、 2 つのオブジェクトを含む配列が作成されます。nil可変引数リストの番人にすぎず、配列には格納されません。実際、Objective-C 配列はまったく保存できませんnil。「最新の」Objective-C では、これは次のように記述されます。

NSArray *locations = @[loc1, loc2];

これは上記の Swift コードに変換されます。

于 2014-07-08T17:13:12.563 に答える