ここに奇妙なバグがあります。
ビューにいくつかのカスタム プロパティを渡すために UIImageView をサブクラス化しています。サブクラスに init メソッドを追加しなければ、すべて問題ありません。
しかし、init を追加すると (そうする必要があります)、フレーム ビューを作成しているときに、コンパイラは Int が CGFloat に変換できないと文句を言います。
Le init を使用した Le サブクラス:
class CustomUIImageView : UIImageView {
let someParameter : Bool
init(someParameter: Bool) {
self.someParameter = someParameter
println("\(someParameter) is being initialized")
}
//Since the release of the GM version of XCode 6, it's asking me to pass this init below
//if I'm initializing a value. Frankly, I've no idea why, what's for nor what should I do about it.
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
deinit {
println("\(someParameter) is being deinitialized")
}
}
フレーム作成時のエラーとル。
var myView: CustomUIImageView!
myView = CustomUIImageView(frame: (CGRectMake(0, 0, 100, 100)))
//compiler says "Int is not convertible to CGFloat".
これはある種のバグですか、それとも私が何か間違ったことをしたのでしょうか (これは非常にもっともらしいことです)。
編集:次のようにして CGFloat に直接変換する必要があることを読みました:
myView = CustomUIImageView(frame: (CGRectMake(CGFloat(0), 0, 100, 100)))
しかし、コンパイラは「Type () がプロトコル 'IntergerLiteralConvertible' に準拠していません」と再び不平を言います。