I’m using some code from here to determine when determining when the last finger in a multi-touch sequence has lifted.
Here’s the code:
/*
Determining when the last finger in a multi-touch sequence has lifted
When you want to know when the last finger in a multi-touch sequence is lifted
from a view, compare the number of UITouch objects in the passed in set with the
number of touches for the view maintained by the passed-in UIEvent object.
For example:
*/
- (void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
if ([touches count] == [[event touchesForView:self] count]) {
// last finger has lifted....
}
}
I’m getting the warning:
passing argument 1 of 'touchesForView:' from distinct Objective-C type
The code builds and runs fine, but I’d like to remove it but don’t understand what the warning means. Any ideas?
That particular warning comes up when you provide an object of a type that is different from the one that was expected.
In this case,
touchesForView:expects aUIViewobject, but you are passing it an object of whatever typeselfhappens to be in this code.In order to make the warning go away, you can either pass an object of the correct type, or you can force the compiler to cast your
selfpointer to the correct type:Be warned, however, that if
selfdoes not behave like aUIView, you could be setting yourself up for subtle errors down the road.update:
I did a quick search, and found this article, which has some excellent guidelines for dealing with Cocoa warnings, and their common causes.
Based on that information, I want to quickly lay out what should be happening with the code you posted. I’m assuming that you created a new iPhone app using the template from Xcode, and that the application has a single
UIView(as seen in Interface Builder).To use the code you posted, you would created a custom
UIViewsubclass as follows:And in Interface Builder, you would set the type of the
viewobject toYourViewClass, and then you should be good to go.With the code laid out as I have shown above, you should not be getting that warning. This leads me to think that one of the steps above has not been done properly. For starters, be sure that:
selfobject is actually aUIViewsubclass (note #1)#importthe header for your class in the source file (note #2)