I get warning "UIViewController may not respond to '-vagTouchesBegan:' (Messages without a matching method signature will be assumed to return 'id' and accept '...' as arguments)" when I call the view controller from the sub view
- (void) touchesBegan: (NSSet *)touches withEvent:(UIEvent *)event { [theViewController vagTouchesBegan:self]; } even though vagTouchesBegan is properly declared in the controller's .h -(void)vagTouchesBegan:(id)sender; Also I follow your advice about retaining loopholes and use -(void)setViewController:(UIViewController *) vc{ theViewController = vc; } So the warning remains puzzling. Note that it's displayed on the sub view .m page only, after the call line, not after the mention "Succeeded". Thanks for your tips. 2009/5/30 WT <jrca...@gmail.com> > On May 30, 2009, at 5:43 PM, Pierre Berloquin wrote: > > Declaring in .h >> >> -(void)vagTouchesBegan:(id)sender; >> was my first impulse. But that's not enough. >> > > It's not clear from your two posts which method you're getting a warning > for. I thought it was for the -vagTouchesBegan method, but you claim it's > not. Please post the actual warning that you get from XCode. > > About the memory problem, I suppose I should receive touchesBegan in the >> controller and sort out what I get ? >> > > No, that's not what I was referring to. I was referring to the fact that if > an object of class A retains an object of class B and that same object of > class B also retains the object of class A which retains it, then you have > what's called a retain cycle. That may cause you trouble if you're not > careful. > > The view controller already retains its view, so if you're passing the view > controller object to the view object for it to keep, then the view object > should NOT retain that view controller object. If what I just said isn't > completely clear to you, you should read > > > http://devworld.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html > > If that document is still a bit obscure, then you should search the web for > more accessible explanations. For instance, > > > http://stackoverflow.com/questions/791322/retain-cycles-why-is-that-such-a-bad-thing > > Note that it *is* ok for the view object to have a pointer to its view > controller. All I'm saying is that you should avoid retaining the view > controller in its view. Thus, instead of > > - (void) setViewController: (UIViewController*) vcontroller > { > [viewController release]; > viewController = [vcontroller retain]; > } > > (which is the typical setter for objects) you should have > > - (void) setViewController: (UIViewController*) vcontroller > { > viewController = vcontroller; // Note: no release and no retain > } > > (atypical for objects, but necessary in this case to avoid a retain cycle). > > Or, if you prefer to use properties, instead of > > @property (readwrite, nonatomic, retain) UIViewController* viewController; > > you should use > > @property (readwrite, nonatomic, assign) UIViewController* viewController; > > Wagner > > > 2009/5/30 WT <jrca...@gmail.com> >> >> On May 30, 2009, at 4:40 PM, Pierre Berloquin wrote: >>> >>> [theViewController vagTouchesBegan:self]; >>> >>>> QED >>>> There's still a warning that the view controller may not respond. But it >>>> works seamlessly. >>>> Can I get rid of the warning? >>>> >>>> >>> Yes, by declaring the method -vagTouchesBegan: in the header file of your >>> view controller class. >>> >>> Something to be cautious about when storing in the view a pointer to its >>> view controller is that you may end up creating a retain cycle, since the >>> view controller already retains its view. I would recommend that you read >>> the documentation on memory management to make sure you don't create >>> unnecessary problems for yourself. >>> >>> Wagner >>> >> -- Blogs : http://bibliobs.nouvelobs.com/blog/jeux-litteraires http://pierre-berloquin.blogspot.com/ Développement durable des neurones par le jeu de réflexion www.crealude.net Sustainable development of neurones through mind games www.crealude.net/us Que fait-on pour les mal-codants ? _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com