LoginSignup
4
4

More than 5 years have passed since last update.

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

Posted at

以下のクラスを作成したところ、"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)
    }
}

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

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4