質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

6740閲覧

Xamarin.forms デバッグ中に落ちるバグについて

gucchi28

総合スコア29

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2016/12/14 06:50

編集2016/12/14 23:54

###前提・実現したいこと
こんにちは。
現在、MacのXamarin Studio Communityを使ってモバイルアプリ開発をしています。
開発対象はAndroidとiPhoneです。
開発はXamarin.formsで行っています。
全て共通プロジェクトでコードを書いており、全てC#で記述しています。
(Xamarin.Droid/Xamarin.iOSプロジェクトにはコードを全く書いていない)
デバッグには、iPhoneシミュレータを使っています。
どうしても解決できない問題がありますので、投稿しました。

###発生している問題・エラーメッセージ
ビルドは通って、基本的にデバッグ実行も正常にできる。
ただし、デバッグ実行時に時々アプリが落ちる。
以下のエラーメッセージが発生。

System.NullReferenceException: Object reference not set to an instance of an object at at (wrapper managed-to-native) UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr) at UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] in /Users/builder/data/lanes/3969/44931ae8/source/xamarin-macios/src/UIKit/UIApplication.cs:79 at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00038] in /Users/builder/data/lanes/3969/44931ae8/source/xamarin-macios/src/UIKit/UIApplication.cs:63 at アプリ名.iOS.Application.Main (System.String[] args) [0x00008] in /Users/ユーザ名/アプリルートディレクトリ/iOS/Main.cs:17

###該当のソースコード
Breakpointを設定して調査したところ、
下記のコードの
var ret = new List<T>(list.Count);
の実行時に落ちているようです。

public static List<T> copy(List<T> list) { var ret = new List<T>(list.Count); foreach (var l in list) { ret.Add(l.Clone()); } return ret; }

###試したこと
メモリリークによって落ちていると考え、Xamarinでメモリリークによって落ちるとされているListViewを使わないように実装し直したが、結果ListViewではなく、Listクラスのインスタンス生成時に落ちていた。

###補足情報(言語/FW/ツール等のバージョンなど)
言語:C#
ツール:Xamarin Studio Community バージョン6.1.2 (build 44)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

P3PPP

2016/12/14 07:17

ちょっと情報がピンポイント過ぎるので、もっと全体像が欲しいです。 `new List<T>()` で落ちるとは考えにくいので何か別の要因があると思われます。
nuits.jp

2016/12/14 07:24

Tのクラスが自作クラスで、そのクラスのstaticフィールドの初期化とか、staticイニシャライザの中で例外がでていれば、new List<T>()で落ちるかもしれませんが、デバックの行数がずれている可能性もあるかもしれません。
gucchi28

2016/12/14 07:36 編集

スタックトレースの結果を追記しました。
gucchi28

2016/12/14 07:42

プログラムを追記しました。
P3PPP

2016/12/14 07:48

`new List<T>(list.Count)` の list がnullなのでは?
gucchi28

2016/12/14 08:11

P3PPPさん、その通りでした!listの値の初期化はイベントハンドラ(Appearing)で行っており、初期化が終わる前に本メソッドを呼び出した時に落ちていたみたいです。ありがとうございました。
P3PPP

2016/12/14 09:28

おめでとうございます。結果的に「メモリリーク」タグは関係なかったので外しておいた方がよろしいかと思います。
gucchi28

2016/12/14 23:54

「メモリリーク」をタグから外しました。
guest

回答1

0

ベストアンサー

※コメントだけでで解決するとシステム的には回答がついていないように見えてしまうのでこっちにも書いておきます。

new List<T>(list.Count) の list がnullだと思われます。

投稿2017/01/29 06:53

P3PPP

総合スコア359

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問