アップルの技術者の皆様、XcodeやiOS6を疑って申し訳ございませんでした。(^^ゞ
原因が分かりました。 私のコーディング上の問題でした。
iOS6から生成したビューに対して「removeFromSuperview」が何故か呼び出されるようになっているため、このメソッドをオーバーライドしてNSTimerの停止処理(停止後、開放される)を組み込んでいたのでビュー生成後の初期処理内でNSTimerを生成して起動した直ぐ後に「removeFromSuperview」が呼び出されたため、NSTimerを停止しておりました。
メンバー変数「mTimerTask」に代入した場合のみタイマー停止処理が行われますが、代入しない場合はタイマー処理の参照が無いので停止されないので代入の有無で挙動が変わっていたようです。
対応としては「removeFromSuperview」のオーバーライドを止めて別のメソッドでタイマー処理を停止するよう修正したところ正常に動作するようになりました。
うーん、結構ハマってしまいました。
ラベル
Apple Watch
(2)
Appleサポート
(1)
cocos2d
(2)
cocos2d v3.1非互換
(19)
iCloud
(1)
iOS5.0非互換
(1)
iOS6非互換
(4)
iOS7
(5)
iOS7.1
(1)
iOS7非互換
(2)
iOS8
(1)
iOS8非互換
(1)
iOS9
(1)
iOSアプリ
(3)
iOS開発入門
(21)
iOS非互換
(1)
iPad
(2)
iPad Pro
(2)
iPhone 5
(2)
iPhone6
(2)
macOS Sierra非互換
(1)
MACアプリ
(3)
Oculus
(1)
Oculus Go
(7)
Oculus Quest
(2)
Oculus Rift S
(1)
OculusRift
(3)
OS X Marvericks
(3)
OS X Marvericks非互換
(1)
OS X Yosemite
(1)
SpriteBuilder
(1)
Swift
(5)
VR
(3)
Webブラウザ
(1)
Windows 10
(1)
Xcode
(12)
Xcode8対応
(1)
Yosemite非互換
(2)
あいさつ
(13)
アップル
(1)
スマホ決済
(1)
トラブル
(2)
リアル黒板
(1)
開発Tips
(6)
戯れ言
(8)
近況
(3)
二角取り
(1)
便利ツール
(1)
でも、UIView内で生成したNSTimer(repeat:YES)を停止(破棄)するタイミングは「removeFromSuperview」をオーバーライドするのがTipsだったので、同様な現象が出ている人も多いような気もしますがどうなんでしょ。
返信削除