しおメモ

雑多な技術系ブログです。ニッチな内容が多いです。

Cellに直接addSubviewするコードに警告を出す

ちょっと前のアップデートで、正しくcontentViewに追加していない場合に、セルの挙動がおかしくなるケースが多発したと思います。
この前Xcode13に上げたタイミングでも食らってしまい、 cellに直接addSubviewしたいケースも多分ないと思ったので、作ってみました。

lintとかでやると大掛かりになるので、雑にdeprecatedにしてしまえという発想です。

#if DEBUG

import UIKit

extension UITableViewCell {
    @available(*, deprecated, message: "Subviews should be added to the cell's contentView")
    override open func addSubview(_ view: UIView) {
        super.addSubview(view)
    }
}

extension UICollectionViewCell {
    @available(*, deprecated, message: "Subviews should be added to the cell's contentView")
    override open func addSubview(_ view: UIView) {
        super.addSubview(view)
    }
}

#endif

警告だらけで埋もれてしまう場合、deprecatedunavailableにすればビルドが通らなくなります。