実装メモ 
2011/03/06 iOSのエントリーポイント 
こんな感じかな。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
-
|
|
|
|
|
!
-
|
|
|
|
|
|
|
|
|
|
!
-
|
|
|
|
|
|
|
-
|
|
|
|
|
!
|
|
|
|
|
|
|
|
!
| int main()
{
return mainC( ... );
}
int mainC( Arg aArg )
{
}
int xmainThreadEntryPoint( Arg* aArgPtr )
{
waitSignal();
int result = 0;
{
Application app( *aArgPtr );
result = xmain( app );
}
signalToUIMain();
return result;
}
|
スレッドでUIViewとかUIWindowを作っても表示されないところで数時間はまった。
スレッドがexitせずにsleepする状態だと怒るらしい。
スレッドを寝かす前に CATransaction::flush() で明示的にCoreAnimationを更新してやるといけた。
正しい方法かどうかは不明…。
2011/03/05 iOS対応どうやろう 
元々WinとMacのクロスプラットフォームで考えていましたが
流行のiOSも対応させてみるのはおもしろそうと思いちょっと考えてみました。
iOS対応となると一番ネックなのがイベントドリブン式になるということ。
didFinishLaunchingWithOptions
applicationWillTerminate
applicationWillResignActive
applicationDidBecomeActive
初期化・後始末・アクティブ化・非アクティブ化のイベント。
後は毎秒60回のイベントが流れてくると考えれば良さそうです。
…という要件からメインループを書いてみる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
-
|
|
|
|
-
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
!
!
| int xmain()
{
Application app;
bool doExit = false;
while ( !doExit )
{
Event event = app.eventReceive();
switch( event )
{
case EventKind_Quit:
doExit = true;
break;
case EventKind_BecomeActive:
break;
case EventKind_ResignActive:
break;
case EventKind_UpdateFrame:
update();
draw();
break;
default:
break;
}
}
}
|
なんとかいけるかな?