Day: June 26, 2015

Swift:再帰呼び出し(ループ)が一段落

再帰呼び出しをどう使うかでなく、再帰呼び出しの解析の仕方に時間がかかってしまいました。

前にも書きましたが、永久ループを引き起こす呼び出しと再帰呼び出しの区別がつかないことがわかり、解析に時間がかかりました。特に、同じfunc名内でなく、ネストになったどこかでそのfunc名を呼び出すケースもあり、単純にいきませんでした。

あと、再帰呼び出しのメソッド名が確定したあと、どうやって再帰呼び出しのメソッドを探すループから抜ければいいか、すぐに思いつきませんでした。結局、呼び出されたメソッド名と外部・内部の別、再帰呼び出しの有無を組み合わせたデータ構造を取る必要がありました。安直にスイッチやカウンタでループを回避しようとしたのですが、うまくいきませんでした。

それで、NSMutableArrayの三次元配列にデータ構造を変更することにしました。各アイテムへのアクセスは悪くなり、しかもコードが読みにくくなるのですが、常数をletで記号化することでまあまあの形に収まりました。

まだ機能追加したい項目がいくつかありますが、MesaEXIFを完成したあとに手がけることにしたいと思います。💢: リカーシブル。

スクリーンショット 2015-06-26 20.33.36