私が直面している問題は、いくつかのテスト デバイスのうち 1 つのデバイスでのみスローされます。すべてのデバイスは iPhone 4s iOS 5.1.1 で、別のデバイスは iOS 6.0.1 です。
同様の質問に対する回答はいくつかありますが、両方の症状を含むものはありません。
アプリケーションは Monotouch で作成されています。
問題の症状は次のとおりです。
アプリケーションは、影響を受けるデバイスの向きを変更しません。影響を受けるデバイスで特定のビューにアクセスすると、NSInvalidArgumentException がスローされます。
完全な例外は次のとおりです。
Objective-C 例外がスローされました。名前: NSInvalidArgumentException 理由: -[UITableViewCell updateConstraintsIfNeeded]: 認識されないセレクターがインスタンス 0x4e07540 に送信されました
スタックトレースは
MonoTouch.Foundation.MonoTouchException: Objective-C 例外がスローされました。名前: NSInvalidArgumentException 理由: -[UITableViewCell updateConstraintsIfNeeded]: 認識されないセレクターがインスタンス 0x4c3cc20 に送信されました /Developer/MonoTouch/Source/monotouch/src/UIKit/UIView.g.cs:1626 の MonoTouch.UIKit.UIView.UpdateConstraintsIfNeeded () [0x00010] で /Users/gavin/Perforce/Jon_PI-151_9051/XXXXXX/XXXXXX/v1.3.1/Mobile/XXXXXX/IOS/XXXXXX.Dialogs の XXXXXX.IOS.Dialogs.NewStyledMultilineElement.GetCell (MonoTouch.UIKit.UITableView テレビ) [0x0000f] で/私の仕事/WorkDetailDialogController.cs:30 /Developer/MonoTouch/Source/MonoTouch.Dialog/MonoTouch.Dialog/DialogViewController.cs:340 の MonoTouch.Dialog.DialogViewController+Source.GetCell (MonoTouch.UIKit.UITableView tableView、MonoTouch.Foundation.NSIndexPath indexPath) [0x00029] で /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38 の MonoTouch.UIKit.UIApplication.Main (System.String[] args、System.String principalClassName、System.String delegateClassName) [0x0004c] で /Users/gavin/Perforce/Jon_PI-151_9051/Pall/XXXXXX/v1.3.1/Mobile/XXXXXX/IOS/XXXXXX.Application の XXXXXX.IOS.Application.Application.Main (System.String[] args) [0x00000] で/Main.cs:28
例外の原因となっているコードは
public class NewStyledMultilineElement : StyledMultilineElement { public override UITableViewCell GetCell (UITableView tv) { UITableViewCell cell = base.GetCell(tv); cell.SelectionStyle = UITableViewCellSelectionStyle.None; cell.UpdateConstraintsIfNeeded(); セルを返します。 } public NewStyledMultilineElement(文字列キャプション, 文字列値) :base(キャプション,値) { } }
エラーをスローしている行は cell.UpdateConstraintsIfNeeded(); です。
バージョン情報は
MonoDevelop 3.0.5 ランタイム Mono 2.10.9 GTK 2.24.10 XCode 4.5.1 Monotouch 6.0.6
影響を受けたデバイスの設定は、期待どおりに機能する他のデバイスと比較されており、明確な違いはありません。
症状はさまざまな問題によるものである可能性があります。ただし、これはスローされる唯一の受け入れです。
どんな助けでも大歓迎です
詳細な調査により、問題は一時的に解決されました。ただし、根本的な原因は確認されていません。解決策は次のとおりです。
向きの問題を解決するために、すべてのビュー コントローラーの派生元であるベース ビュー コントローラーに次のコードが追加されました。
public override bool ShouldAutoRotateToInterfaceOrientation(UIInterfaceOrientation toInterfaceOrientation)
{
return true;
}
NSInvalidArgumentException を解決するために、派生クラスの代わりに StyledMultilineElement が使用されています。この問題は GC が原因である可能性がありますが、検証していただければ幸いです。
解決策は、根本的な原因を特定せずに問題を解決します。これがすべてのデバイスではなく 1 つのデバイスでのみ発生している理由の説明は役に立ちます。