エクステンションにストアドプロパティを設定することはできません。
クラスのプロパティ構造の追加が変更されるため、既存のクラスにプロパティを追加することはできません。また、Objective C、Swift、または他のプログラミング言語ではそれを買う余裕がないため、ストアドプロパティをエクステンションに追加することはできません。
それでは何の問題もありませんか?
は、これは、あなたの拡張機能に保存されているプロパティとしてラベルを保存するために何ができるかです:)どのように動作する
import Foundation
import UIKit
fileprivate var ascociatedObjectPointer : UInt8 = 99
extension UITextField {
var myLabel : UILabel {
get {
return objc_getAssociatedObject(self, &ascociatedObjectPointer) as! UILabel
}
set {
objc_setAssociatedObject(self, &ascociatedObjectPointer, myLabel, .OBJC_ASSOCIATION_RETAIN)
}
}
}
?
シンプルな変数や、既存のクラスとは関係のないポインタを内部的に保持することで、setterとgetterを記述することで、既存の構造には影響しませんクラス。
希望します。
setterは無限ループを引き起こします。 – vadian
内線番号 –