我对TouchesEnded方法有一个非常奇怪的行为
我使用这种语法来访问数组元素
int cal=((b * (b-a-1))+4);
printf("cal is %d",cal);
c=[file_contents objectAtIndex:cal];
printf("message2------%d",c);
并且它在程序中的任何地方工作正常,但是当我在上面调用这段代码时
touchesEnded
使其崩溃应用>>
实际上这是我的功能,我在viewdidload
和touchesEnded
int values_retrieval(int a,int b)
{
//NSLog(@"for loop variable i=%i--> the retrieve coordinates are::%@", a,[file_contents objectAtIndex:(b * (b-a-1))+4]);
printf("message111111111");
int cal=((b * (b-a-1))+4);
printf("cal is %d",cal);
NSString *c=[file_contents objectAtIndex:cal];
int val=[c intValue];
printf("message222222222------%d",val);
return val;
}
在viewdidload
中调用它时一切顺利,当它在touchesEnded
方法中调用时,应用程序崩溃了
我不知道出了什么问题
这是我的TouchedEnded方法
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint touchedEnd;
int index=5;
int i=3;
printf("value of i is %d",i);
NSString *test=values_retrieval(i, index);
printf("val issssssssssssssssssss %d",test);
touchedEnd = [[touches anyObject] locationInView:touch.view];
}
赞赏任何想法或帮助
答案 0 :(得分:1)
c正在处理int并且您在printf()中为其分配了一个对象。
有可能cal超出了数组的范围,或者你的数组超出了Scope而不再存在,因为你正在使用ARC,或者你以其他方式释放它。
试试这个:
int cal=((b * (b-a-1))+4);
printf("cal is %d",cal);
if(cal > file_contents.count-1)
{
printf("Cal is too big");
}
else
{
c=[file_contents objectAtIndex:cal];
}
NSLog(@"message2------%@", c);
答案 1 :(得分:0)
根据你的评论:
NSString * c = [file_contents objectAtIndex:cal];这就是行 我收到任何帮助@AKV
的EXC_BAD_ACESS错误
如果您未保留对象并且已释放并尝试访问该对象,则会显示错误EXC_BAD_ACESS
。
如果您使用ARC,请确保file_contents
类型为strong
。
如果您使用的是非ARC,请使用retain
。