Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class a {
- var p: String!
- init() {
- self.p = "class a"
- }
- }
- class b {
- var p: String!
- init() {
- self.p = "class b"
- }
- }
- // ここではクラスa専用になっているが、クラスbでも共通で利用したい
- class monitor {
- var i: a!
- init() {
- self.i = a()
- print(self.i.p) // class a
- }
- }
- let i = monitor() // クラスaかbを渡して、共通のpを参照させたい
- import Foundation
- //
- //インスタンスを渡す
- //
- protocol MonitorTargetType {
- var monitoredProperty: String {get}
- }
- class TargetClassA: MonitorTargetType {
- var monitoredProperty: String
- init() {
- self.monitoredProperty = "class TargetClassA"
- }
- }
- class TargetClassB: MonitorTargetType {
- var monitoredProperty: String
- init() {
- self.monitoredProperty = "class TargetClassB"
- }
- }
- class Monitor {
- var target: MonitorTargetType
- init(target: MonitorTargetType) {
- self.target = target
- print(self.target.monitoredProperty) //->class TargetClassA
- }
- }
- let i = Monitor(target: TargetClassA())
- import Foundation
- //
- //クラスオブジェクトを渡す
- //
- protocol MonitorTargetType {
- init()
- var monitoredProperty: String {get}
- }
- class TargetClassA: MonitorTargetType {
- var monitoredProperty: String
- required init() {
- self.monitoredProperty = "class TargetClassA"
- }
- }
- class TargetClassB: MonitorTargetType {
- var monitoredProperty: String
- required init() {
- self.monitoredProperty = "class TargetClassB"
- }
- }
- class Monitor {
- var target: MonitorTargetType
- init<T: MonitorTargetType>(targetType: T.Type) {
- self.target = targetType.init()
- print(self.target.monitoredProperty) //->class TargetClassB
- }
- }
- let i = Monitor(targetType: TargetClassB.self)
Add Comment
Please, Sign In to add comment