Swift 3.0でFactory method パターン(static funcの謎)
御無沙汰です、代表です。
iOSのアプリ開発を、隙をみてチョコチョコやっているのですが、ごくたまにエラーを解決できずに長時間悩んでしまうことがあります。
以前はよく、^X ^S を間違ってタイプしてしまい、(Emacsでは編集中のソースコードをファイルに保存するショートカットです)これが謎のエラーを起こしてかなり悩んだことがありました。
最近のバージョンでは ^X ^S とタイプしても、エディタ上で『変なコードがあるから空白に変換しようか?』などとお節介を焼いてくれるので悩むことはないですが。
それで、表題の件ですよ。
結論を先に言いますと、
『Swift 3.0 において、staticなfuncには2個以上のパラメータはつけることが出来ない』
・・・何かの間違いであってほしいと思います。
ちょうど新しいXCodeのアップデートが来ているので、それで治っていれば良いのですが。
残念ながら私の環境では、「ディスク容量が足りない」と言われて最新のXCodeにアップデートすることが出来ないので、治ってるかどうかは分かりません。
XCodeのバージョンは 8.1 です。
現象をもう少し詳しく書きましょう。
以下のようなコードは実行時にエラーになります。
(掲載用に簡略化してあります)
// SampleClass.swift
class SampleClass: NSObject {
var strTest1: String?
var strTest2: String?
static func newInstance(_ str: String, opt: String) -> SampleClass {
let instance = SampleClass()
instance.strTest1 = str
instance.strTest2 = opt
return instance
}
}
// somewhere in the code
let inst = SampleClass.newInstance("teststring", opt: "options...")
SampleClass.newInstanceを呼び出したタイミングで、実行時エラーが起きます。
newInstanceメソッドから引数をひとつ減らすだけで、エラーは起きなくなります。
Factory Methodパターンをやりたいのに、引数が一個しか渡せないとか、頭がいたいです。
コメントを残す