• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Message from view to viewController
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Message from view to viewController


  • Subject: Re: Message from view to viewController
  • From: Pierre Berloquin <email@hidden>
  • Date: Sun, 31 May 2009 08:04:43 +0200

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 <email@hidden>

> 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 <email@hidden>
>>
>>  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 (email@hidden)

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:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Message from view to viewController
      • From: WT <email@hidden>
    • Re: Message from view to viewController
      • From: Pierre Berloquin <email@hidden>
References: 
 >Re: Message from view to viewController (From: Pierre Berloquin <email@hidden>)
 >Re: Message from view to viewController (From: Scott Ribe <email@hidden>)
 >Re: Message from view to viewController (From: Pierre Berloquin <email@hidden>)
 >Re: Message from view to viewController (From: WT <email@hidden>)
 >Re: Message from view to viewController (From: Pierre Berloquin <email@hidden>)
 >Re: Message from view to viewController (From: WT <email@hidden>)

  • Prev by Date: [Announce] A Core Data Tutorial Part 2: Polishing the Basics
  • Next by Date: Re: How to draw background image in my app window
  • Previous by thread: Re: Message from view to viewController
  • Next by thread: Re: Message from view to viewController
  • Index(es):
    • Date
    • Thread