我在使用從遠程服務器接收的數據時遇到了一些問題。這是我參加從我nsinputstream數據:目標C-使用[NSString initwithdata]時混淆EXC_BAD_ACCESS
case NSStreamEventHasBytesAvailable:
{
if(!_data)
{
_data = [NSMutableData data];
}
uint8_t buffer = malloc(1024);
NSInteger *len = [inputStream read:buffer maxLength:1024];
if(len)
{
_data = [[NSData alloc]initWithBytesNoCopy:buffer length:1024];
[self closeThread];
}
shouldClose = YES;
break;
}
在同一個班我有這個功能,以便使用它在不同的班級返回數據:
-(NSData *)returnData {
return self.data;
}
在視圖控制器,我想使用的數據我有這樣的代碼來檢索使用數據:
_schools = [_server returnData];
NSString *schoolString = [[NSString alloc] initWithData:self.schools encoding:NSUTF8StringEncoding];//exc_bad_access
據我瞭解有關EXC_BAD_ACCESS例外,他們通常意味着你試圖訪問d無論是不存在還是未分配。 _schools變量顯示1024字節的大小,所以我知道有正確分配的內存。還有什麼我錯過的錯誤嗎?
你爲什麼在某些地方使用'_schools',而在其他地方使用'self.schools'(非常接近下一行)? – nhgrif
如果用'_schools'替換'self.schools',會出現同樣的錯誤? – juniperi
爲什麼你不做'NSString * schoolString = [[NSString alloc] initWithData:[_ server returnData] encoding:NSUTF8StringEncoding];'這是否會產生相同的錯誤? – nhgrif