任务单 #41989

iOS版 バックグラウンドスレッドからのUI API呼び出し

开放日期: 2021-04-11 22:46 最后更新: 2021-04-12 00:15

报告人:
属主:
类型:
状态:
关闭
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:

Details

アプリ実行中にXcodeに次の警告が表示される。

UI API called from background thred
  [UIView bounds] must be used from main thread only

発生箇所はこちら。

MTDashboard::_GetCounterPos
    rect = [m_pView bounds];

任务单历史 (3/9 Histories)

2021-04-11 22:46 Updated by: yknk
  • New Ticket "iOS版 バックグラウンドスレッドからのUI API呼び出し" created
2021-04-11 22:46 Updated by: yknk
评论

原因

描画クラスのメンバに、他のビューのポインタ(UIView*)を持っており、クライアント領域のサイズを取得するために利用していた。 シーン生成時にスレッドを起動しており、この中でダッシュボード描画オブジェクトの初期化を行っているため、警告が発生する。

2021-04-11 22:46 Updated by: yknk
评论

対策方針

描画クラスのメンバに、他のビューのポインタ(UIView*)を持たず、クライアント領域のサイズを持つように修正する。

2021-04-11 22:46 Updated by: yknk
评论

対策1:アプリケーションクラス

MIDITrailApp::createSceneWithType

シーン生成処理の引数にboundsを追加。

2021-04-11 22:46 Updated by: yknk
评论

対策2:メインビュー制御クラス

MTMainViewCtrl

以下メンバを追加。

  • スクリーンサイズ情報 m_ViewBounds

MTMainViewCtrl::initWithNibName:bundle:rendererParam

メンバm_ViewBoundsの初期化処理を追加。

MTMainViewCtrl::getViewBounds

ビュー境界取得メソッドを追加。

MTMainViewCtrl::initializeOpenGLContext

メンバm_ViewBoundsの設定処理を追加。

2021-04-11 22:46 Updated by: yknk
评论

対策3:ダッシュボード描画クラス

MTDashboard

メンバからm_pViewを削除。 メンバにm_ViewBoundsを追加。

MTDashboard::MTDashboard

メンバm_pView初期化処理を削除。 メンバm_ViewBounds初期化処理を追加。

MTDashboard::Create

引数UIView*をCGRectに変更。 メンバm_pView設定処理を削除。 メンバm_ViewBounds設定処理を追加。

MTDashboard::_GetCounterPos

メンバm_pView参照をm_ViewBounds参照に変更。

MTDashboard::_GetCounterFPSPos

メンバm_pView参照をm_ViewBounds参照に変更。

2021-04-11 22:47 Updated by: yknk
评论

対策4:モニタ用ダッシュボード描画クラス

MTDashboardLive

メンバからm_pViewを削除。 メンバにm_ViewBoundsを追加。

MTDashboardLive::MTDashboardLive

メンバm_pView初期化処理を削除。 メンバm_ViewBounds初期化処理を追加。

MTDashboardLive::Create

引数UIView*をCGRectに変更。 メンバm_pView設定処理を削除。 メンバm_ViewBounds設定処理を追加。

MTDashboardLive::_GetCounterPos

メンバm_pView参照をm_ViewBounds参照に変更。

MTDashboardLive::_GetCounterFPSPos

メンバm_pView参照をm_ViewBounds参照に変更。

2021-04-11 22:47 Updated by: yknk
评论

対策5:シーンクラス

MTScene::Create

引数にCGRectを追加。

MTScenePianoRoll2D::Create

引数にCGRectを追加。

MTScenePianoRoll2DLive::Create

引数にCGRectを追加。

MTScenePianoRoll3D::Create

引数にCGRectを追加。

MTScenePianoRoll3DLive::Create

引数にCGRectを追加。

MTScenePianoRollRain::Create

引数にCGRectを追加。

MTScenePianoRollRain2D::Create

引数にCGRectを追加。

MTScenePianoRollRain2DLive::Create

引数にCGRectを追加。

MTScenePianoRollRainLive::Create

引数にCGRectを追加。

MTScenePianoRollRing::Create

引数にCGRectを追加。

MTScenePianoRollRingLive::Create

引数にCGRectを追加。

MTSceneTitle::Create

引数にCGRectを追加。

2021-04-12 00:15 Updated by: yknk
  • 状态 Update from 开启 to 关闭
  • 处理结果 Update from to Fixed

Attachment File List

No attachments

编辑

Please login to add comment to this ticket » 登录名