我有這樣的代碼:的NSString和崩潰
-(void)getData:(NSString *)data: (id) tv: (id) soc
{
NSLog(@"\nin get data with data\n");
NSLog(data);
幾小時應用程序崩潰後,並達到與數據獲取數據,不打印數據,因此它的崩潰對數據的打印。調試引用類似字符串長度函數的失敗。在XCode中,數據有一個警告:它不是一個字符串文字,並且可能不安全。現在我的經驗告訴我,最可能的罪魁禍首是數據是空的。但它也在日誌中打印了一些看起來像是收到了典型消息的東西。它說它有來自套接字的131個字節。當我測試時,它上次崩潰了它有189個字節。但它從不打印它。
的數據是從插座liket這在發送中接收數據:
UInt8 buffer[len];
NSLog(@"Received %d bytes from socket %d\n",
len, CFSocketGetNative(s));
CFDataGetBytes(df, range, buffer);
NSString *oldtext = [mTextViewAlias text];
char buffer2[len];
for(int a=0; a<len; a++)
buffer2[a]=buffer[a];
NSMutableData *buffer3 = [[NSMutableData alloc] init];
[buffer3 appendBytes:buffer2 length:len];
NSString *newdata = [[NSString alloc] initWithData: buffer3 encoding:NSASCIIStringEncoding];
和調用類的方法時,它打印的數據崩潰只是:
[mytelnet getData:newdata:mTextViewAlias:(__bridge id)(s)];
我可以有內存泄漏或什麼東西,幾個小時後,我內存不足,導致新數據分配爲空,即使我開始了大約100個字節?它會崩潰,只有當我試圖在nslog中打印數據,而不是之前如果它未能分配內存?
邁克
不知道這是什麼,但這裏是我如何處理它的調試:1.將「其他警告標誌」設置爲-Wall並獲得一個乾淨的編譯。 2.確保你沒有收到來自靜態分析儀的警告。 3.如果您懷疑自己可能正在運行內存,請使用「泄漏/分配」在儀器中運行應用程序。 –
請發佈堆棧跟蹤。 – trojanfoe