この問題を解決するには、すべてのコールバックメソッドにブレークポイントを設定する必要があります。
問題はシンプルで、コードは見つけることができないメモリにアクセスしようとしています。
コールバックが連続して呼び出されないため、そのコード行を見つけることは困難です。
- は
- より多くのブレークポイントを追加し
- 以上のNSLog(..)を追加し、例外(throwing an exception in objective-c/cocoaを参照)
出力はコンソールを形成引く考えてみましょう:
Attaching to program: `/Users/rjstelling/Library/Application Support/iPhone Simulator/User/Applications/C04A40BB-1D98-402E-BBEF-37E6FB860089/TwoViewApp.app/TwoViewApp', process 24032.
Re-enabling shared library breakpoint 1
2009-04-16 16:16:45.830 TwoViewApp[24032:20b] stream event 1
2009-04-16 16:16:45.831 TwoViewApp[24032:20b] on input stream
2009-04-16 16:16:45.831 TwoViewApp[24032:20b] stream event 1
2009-04-16 16:16:45.832 TwoViewApp[24032:20b] on output stream
2009-04-16 16:16:45.832 TwoViewApp[24032:20b] stream event 4
2009-04-16 16:16:45.832 TwoViewApp[24032:20b] on output stream
2009-04-16 16:16:45.833 TwoViewApp[24032:20b] stream has space open
(gdb) continue
2009-04-16 16:17:06.405 TwoViewApp[24032:20b] We made it - ok!
2009-04-16 16:17:06.406 TwoViewApp[24032:20b] stream event 2
2009-04-16 16:17:06.406 TwoViewApp[24032:20b] on input stream
2009-04-16 16:17:06.407 TwoViewApp[24032:20b] Processing: +OK CONN PinkNotes® Plus Master v5.00.26 Beta (v4 compatible)
:tPNPStr
2009-04-16 16:17:06.407 TwoViewApp[24032:20b] SendData= USER (null):tPNPStr
Current language: auto; currently objective-c
Program received signal: “EXC_BAD_ACCESS”.
(gdb)
を
問題は、またはProcessData
の後にコールバックだと思います。あなたが追加した場合それはEXC_BAD_ACCESS
が原因となっているラインではありません
TwoViewAppAppDelegate.m
にライン157を中心にブレークポイントを試してみて、置く:
else
{
NSLog(@"We made it - ok!");
}
IF()ステートメントに、あなたはそれを見ることができます渡します。if (![sendData isEqualToString:@"-"]){...}
メソッド呼び出しからフォームを返すときにエラーが発生します。
[OK]をフォームはあなたのコメント、これは役立つかもしれない:
あなたは、彼らはすなわち、同じコンテンツを持っているならば、彼同じメモリにこれらをマッピングします@"My string"
コンパイラを使用して文字列を作成する場合:
NSString *var1 = @"string1";
NSString *anotherstring = @"string1";
NSString *morestringivars = @"string1";
すべてが同じメモリ空間を指します。
これは役に立ちますが、わかりません。多分もっと多くのコードを投稿して、私のセットアップでそれを実行することができます。
自動解放プールはiPhone上のイベント・サイクルの開始時に作成されて覚えておいてください。
したがって、それをivarに割り当てたらすぐにsendDataのautoreleaseを呼び出すことをお勧めします。
...
[sendData autorelease];
...
私のappDelegateヘッダーファイルでsendDataプロパティを宣言していたとき、私は '保持'を使用していない - しかし、私はそれを変更し、まだエラーを取得しています。奇妙なことは、これと同じ方法で他のプロパティを使用していることです。これがエラーを生成する唯一のものです。 – Dutchie432