目的変数Cから、および初期化パラメータが省略可能なスウィフトクラスから新しいスウィフトクラスオブジェクトを作成しようとしています。nilプロパティを持つ新しいスウィフトクラスオブジェクトを割り当てると、nilオブジェクトが返されます
これはスウィフトから、私は初期化しようとしているクラス、
@objc
public class ClassStatus: NSObject {
public private(set) var prop1: DemoClass?
public private(set) var prop2: DemoClass2?
public override var description: String {
return "\(prop1)"
}
public init(prop: DemoClass?) {
super.init()
self.prop1 = prop
}
public convenience init(propA: DemoClass?, propB: DemoClass2) {
self.init(prop: propA)
self.prop2 = propB
}
}
で、
let statusObj = ClassStatus(prop: nil)
のObjective-C
からClassStatus *connState = [[ClassStatus alloc]initWithProp:nil];
作成されたオブジェクトがでnilである理由どちらのケースでも、目的のプロパティを持つ有効なオブジェクトをnilとして返すのではなく、
EDIT :: オブジェクトを印刷すると、nilとして表示されます。ここでは、実際にオブジェクトを操作しようとしていて、それが無限であろうと有効であっても、オブジェクトのプロパティを探します。ここでのケースは、プロパティがnilである有効なオブジェクトを作成する代わりに、オブジェクトがnilとして表示される理由です。
EDIT 2:これは有効な質問ではありません。これは、descriptionメソッドのオーバーライドのために実際にはnilの結果が起こっているためです。オブジェクトの作成はそのまま実行されます。
は再現できないことを、このリンクをチェックすることができます。 'NSLog(@" connState =%p、prop1 =%p "、connState、connState.prop1);' connState = 0x1020003f0、prop1 = 0x0'を出力します。 –
'po connState'のように、オブジェクトをコンソールに直接印刷できますか?私が得ているのはコズです。オブジェクトを使用しようとすると、それは無しと表示されます。 –
私はNSLogをデバッガコンソール以上に信頼しています。おそらくオブジェクトがまだデバッガで印刷しようとした時点で作成されていないでしょうか? –