Posted at

【Swift】Genericとtypealiasを使ったら"compiler segmentation fault when building"が起きた

More than 3 years have passed since last update.

以下のクラスを作成したところ、"compiler segmentation fault when building"が出力されてコンパイルエラーになりました。

環境

Xcode Version
Swift Version

6.4
1.2


BaseModel.swift


import UIKit

protocol BaseModel: NSObjectProtocol {

/// 変換するモデルクラス
typealias ModelType

/**
APIからのレスポンスをModelTypeの変換する

:param: response APIからのレスポンス

:returns: 変換できたらModelTypeを返す。できなければnil。
*/
static func toModel(#response: AnyObject!) -> ModelType?
}



APIArrayResult.swift


import UIKit

class APIResult<T: ModelType> {

/// APIからのレスポンスを変換したクラス
var model: T.ModelType? = nil

/**
init

:param: response APIからのレスポンス
:returns: self
*/
init(response: AnyObject!) {
self.model = T.toModel(response: response)
}

}


コンパイルエラーが差していた箇所はAPIResultが保持するvar model: T.ModelType?の部分でした。

なので以下のように書き換えたところ、コンパイルエラーがなくなりました。


APIArrayResult.swift


import UIKit

class APIResult<T: ModelType> {

var model: Optional(T.ModelType) = nil

init(response: AnyObject!) {
self.model = T.toModel(response: response)
}
}


何が気に食わなかったのでしょうか...。