Open sonsongithub opened 7 years ago
Playground上ではパッケージが無いので、numswとPlaygroundsは同じパッケージに無いといけない。つまり、RenderViewControllerからMatrixを使う時、ファイル冒頭に import numsw
は書かない。
よって、sandboxターゲットでは、numswとPlaygroundsの全てのソースが突っこまれる。
一方、numsw上ではnumswとテストコードは別れているので、テストコードの冒頭には @testable import numsw
と書く。
これを、sandbox側に取り込んでテストコードを実行しようとすると、 バンドル名が sandbox
であるため、 @testable import numsw
がエラーになる。
現状は、このimportを通すため、sandboxにソースで入ってるnumswとは別に、さらにnumsw.xcodeprojで生成されるnumsw.frameworkを突っ込んでいる。つまり、 numsw.Matrix
と sandox.Matrix
の両方が入ってる。
sandboxのバンドル名をnumswに変えるのは他の問題が起こりそうなのでやりたくない。
数学関係のクラスが追加されたりしたときに、numsw.xcodeproj側とsandbox.xcodeproj側で2重に対応するのは、対応漏れするとおかしくなりそうなので微妙。
そう考えると、sandbox.xcodeprojからnumsw.xcodeprojを参照させて、numsw.Frameworkを取り込むのが良い。
問題は、sandbox側のPlaygrounds系のソースで、 import numsw
と書く事になってしまって、肝心のPlaygroundの方で動かなくなってしまう事。
そこで、sandbox.xcodeprojのときだけフラグを立てて、プロプロセッサで import numsw
が書かれるようにして、Playgroundの時はそれが書かれないようにする。
This is complex discussion.
In sandbox, there are following facts.
[Double]
types are at plotting APIs.CGPoint
,CGAffineTransform
types are at rendering transformation calculation.There is no numsw types. but,...
1
to numswMatrix
( orVector
?) types in future.2
to numswMatrix
types in future, but in this case, we need to add 3D transformation utilities to numsw such liketranslation
,rotation
etc. Is this follow design philosophy of numsw ?Anyway at least about [3], sandbox project need to include numsw maths.
Next, there are 2 possibilities of build structure.
Framework
bundle.In ordinary iOS development, [5] is natural. But we treat playground package project and it can not include
Framework
bundle. So pattern [5] have a more different between sandbox app and actual playground package. its bad. To efficient development, we need to reduce difference.So I think pattern [6] is better.
Finally, I have more one option.
Should we need sandbox xcode project ? [7] We can make sandbox app target into numsw xcode project and delete sandox project.
There is one problem about math test codes. We add test files to sandbox project to run them on iOS devices. But it split test code management from math development workflow I think. Plan [7] may solve this disjunction.