我是iphone编程的初学者我正在做一个照片库的应用程序,其中滚动UITableView我在我的设备中收到此异常作为程序接收信号:“EXC_BAD_ACCESS”
任何人都可以帮我解决这个问题...
enter cod[super viewDidLoad];
self.title=@"Back";
udf=[NSUserDefaults standardUserDefaults];
id_arr=[[NSMutableArray alloc]init];
descrip_arr=[[NSMutableArray alloc]init];
path_arr=[[NSMutableArray alloc]init];
count_arr=[[NSMutableArray alloc]init];
client = [[[ClientController alloc] init] autorelease];
r_m = [[[RequestMessage alloc]init] autorelease];
m_j = [[[Main_Json alloc]init] autorelease];
[r_m setServiceType:@"IMAGE"];
[r_m setParameter:@"sample string"];
NSString * json_string = [m_j returnJsonString:r_m:@"button"];
json_string=[json_string stringByAppendingFormat: @"\n"];
NSLog(@"Client is sending:%@", json_string);
//NSLog(json_string);
client.connect;
NSLog(@"client connecting........");
if([client isConnected])
{
NSString *flag = [client send:json_string];
if(![flag isEqualToString:@"success"])
{
NSLog(@"Before Alert_view");
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:flag delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
return;
}
NSString *Var=[client receiveResponse];
//NSLog(@"TEST:%@",Var);
NSString *main_str=[Var stringByReplacingOccurrencesOfString:@"!#{}&" withString:@""];
//main_str=[Var stringByReplacingOccurrencesOfString:@"{\"serviceType\":\"ALLIMAGE\",\"parameters\":[[]]}" withString:@""];
NSLog(@"Split:%@",main_str);
js=[[JsontoObject alloc]sivajiTV_response:main_str];
e1=[[Event alloc]init];
NSLog(@"TEST1:%@",[udf objectForKey:@"id_value"]);
NSLog(@"TEST2:%@",[udf objectForKey:@"des_value"]);
NSLog(@"TEST3:%@",[udf objectForKey:@"path_value"]);
NSLog(@"TEST4:%@",[udf objectForKey:@"count_value"]);
id_arr=[[udf objectForKey:@"id_value"] componentsSeparatedByString:@","];
NSArray *descrip_arr1 =[[udf objectForKey:@"des_value"] componentsSeparatedByString:@","];
NSArray *path_arr1=[[udf objectForKey:@"path_value"] componentsSeparatedByString:@","];
count_arr=[[udf objectForKey:@"count_value"] componentsSeparatedByString:@","];
//NSLog(@"-------------");
//NSLog(@"STRING_ID2:%@",descrip_arr1);
//NSLog(@"STRING_ID3:%@",path_arr1);
//NSLog(@"-------------");
for (int i=0; i<[descrip_arr1 count]; i++) {
NSString *temp=[NSString stringWithFormat:@"%@",[descrip_arr1 objectAtIndex:i]];
//NSLog(@"STRING_test:%@",temp);
temp=[temp stringByReplacingOccurrencesOfString:@"\"" withString:@""];
//NSLog(@"STRING_test1:%@",temp);
[descrip_arr addObject:temp];
NSString *temp1=[NSString stringWithFormat:@"%@",[path_arr1 objectAtIndex:i]];
temp1=[temp1 stringByReplacingOccurrencesOfString:@"\"" withString:@""];
[path_arr addObject:temp1];
}
NSLog(@"------------------------------------------------------------------------------");
NSLog(@"STRING_ID1:%@",id_arr);
NSLog(@"STRING_ID2:%@",descrip_arr);
NSLog(@"STRING_ID3:%@",path_arr);
NSLog(@"STRING_ID4:%@",count_arr);
NSLog(@"------------------------------------------------------------------------------");
if([main_str isEqualToString: [NSNull null]])
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:main_str delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
return;
}
}
else
{
UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:nil message:@"Connection not Found" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert1 show];
[alert1 release];
}
UILabel *lblTitle=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 40)];
lblTitle.backgroundColor=[UIColor clearColor];
self.navigationItem.titleView=lblTitle;
toolbar=[[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 25)];
toolbar.barStyle=UIBarStyleBlackOpaque;
[self.view addSubview:toolbar];
UILabel *mylabel = [[UILabel alloc] initWithFrame:CGRectMake(250, 2, 60, 20)];
mylabel.backgroundColor=[UIColor clearColor];
mylabel.textColor = [UIColor whiteColor];
mylabel.text = @"Gallery";
[toolbar addSubview:mylabel];
myTableView.frame=CGRectMake(0,26, 320,430);
// myTableView.backgroundView=nil;
[self.view addSubview:myTableView];
//self.myTableView.separatorColor = [UIColor clearColor];
//UITableViewController *myTableViewController = [[UITableViewController alloc] initWithTableStyle:UITableViewStyleGrouped];
// UIToolBar *myToolBar = [[UIToolBar alloc]initWithFrame:CGRectMake(0, 15, 320, 10)];
// CGRect *toolBarFrame;
// toolBarFrame = CGMakeRect (0, 440, 320, 40);
// [toolBarFrame setFrame:toolBarFrame];
// [myTableViewController.view addSubView:toolBarFrame];
//viewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"movies.jpg"]];
//myTableView.rowHeight=120;
[self.view addSubview:myTableView];
//tempArray = [[NSArray alloc] initWithObjects:@"Sports",@"News",@"naturals1",@"live",nil];
//titleArray = [[NSArray alloc] initWithObjects:@"SA spinners made the difference: Sammy",@"Cabinet terminates ISRO’s deal",@"Hudson River Fish Evolve Toxic ",@"Hi Today Special News?",nil];
//SBJSON *json = [SBJSON new];
// json.humanReadable = YES;
//self.tableDataList = tempArray;
//self.myTableView.backgroundColor = [UIColor clearColor];
//create new uiview with a background image
//UIImage *backgroundImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"movies" ofType:@"jpg"]];
//UIImageView *backgroundView = [[UIImageView alloc] initWithImage:backgroundImage];
//adjust the frame for the case of navigation or tabbars
//backgroundView.frame = CGRectMake(0, 0, 320, 460);
//add background view and send it to the back
//[self.viewController.view addSubview:backgroundView];
//[self.viewController.view sendSubviewToBack:backgroundView];
//[backgroundView release];
//UIImage *img1= [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://122.183.217.134:8080/sivajitv/photos/20101216001017.jpg"]]];
//NSLog(@"ERROR1:%@",img1);
//NSData *imageData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:@"http://122.183.217.134:8080/sivajitv/photos/20101216001017.jpg"]];
//NSLog(@"ERROR12:%@",imageData);
}
答案 0 :(得分:4)
你的代码有很多问题,很难知道从哪里开始:
client.connect;
是[client connect]
的语法糖,但是因为connect
不是属性(至少我希望它不是属性) ,你应该不使用点符号。
isEqualToString:
的参数需要NSString *
个对象,而不是NSNull *
。如果要查看变量是否指向字符串(而不是nil
),或者,如果要确保字符串实际包含字符,请使用:
if ([main_str length])
// do something
您使用id_arr
将您拥有的新可变数组分配给id_arr=[[NSMutableArray alloc]init];
,但是稍后您会使用id_arr=[[udf objectForKey:@"id_value"] componentsSeparatedByString:@","];
完全覆盖此引用。这意味着您创建(并拥有)的原始数组无法再被引用,并且已泄露。
您永远不会初始化您分配的对象:
js=[[JsontoObject alloc]sivajiTV_response:main_str];
您创建了一个Event
对象,但从不使用它或释放它(这是内存泄漏):
e1=[[Event alloc]init];