• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Objective-Cのメソッド、または文字列操作の実装について)

Objective-Cメソッド実装でのSIGABRTクラッシュの原因は何か?

このQ&Aのポイント
  • Objective-Cのメソッド実装において、SIGABRTを受け取りクラッシュする場合、原因は文字列操作の実装にあります。
  • クラッシュログを解析すると、特定のコード部分でクラッシュが起きていることがわかります。
  • 具体的には、指定された範囲外の文字列の切り出しを行っているためにエラーが発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • tanma3
  • ベストアンサー率58% (14/24)
回答No.3

No.2です。 returnのタイミングでリリースされているのではなく、戻り値として取得ポインタを使用しようとしたタイミングでアボートとしているのだろうと思います。 私の環境で同じ関数を作成し、そのポインタをNSLogで使用しようとしたところ、NSLog中にエラーとなりました。

desktop121
質問者

お礼

回答ありがとうとざいます。 大変助かりました。 そんなことがあるんですね。 やっぱりCocoaは難しいです。

その他の回答 (2)

  • tanma3
  • ベストアンサー率58% (14/24)
回答No.2

それは文字列格納されているメモリー領域がリリースされてのこってないから。それにアクセスした時点でアボートになります。 [[aDate description]retain]などとしてメモリーがリリースされないよう明示しないといけないです。 その後自分で、使わなくなったらreleaseしなとメモリーリークになるんで気をつけてください。

desktop121
質問者

補足

回答有難うございます。 なるほど、と言った感じです。 aStrが自動開放されていると言う理解でいいですか? ただ、よくわからない点があるのですが、 自動開放はイベントループごとにされているはずですが、 なぜreturnまでの間に自動開放されてしまうのでしょうか? メソッド内でイベントループが終了するということはないと思うのですが・・・、 Cocoaは難しいです。 この辺のこともわかりますか?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

Objective-C も Cocoa も知らないので当てずッぽだけど, 「aStr の長さが足りない」とかいうオチはある?

desktop121
質問者

補足

回答ありがとうございます。 aStrには「YYYY-MM-DD HH:mm +msec」という形式で 日付が入っています。 なので長さは大丈夫そうです。 でも、aStrに何か問題ありって考えるのは自然ですね。 その方向でもっと調べてみます。

関連するQ&A