Re: Message from view to viewController
Re: Message from view to viewController
- Subject: Re: Message from view to viewController
- From: Pierre Berloquin <email@hidden>
- Date: Sun, 31 May 2009 11:30:53 +0200
I think I solved the warning problem. I suspected my folder logic was wrong
so I cleaned it up, taking all class files from the project and adding them
back one by one. And it works fine, no warning anywhere !I had a duplicate
controller I had created by mistake and I thought I had gotten rid of.
Thanks
2009/5/31 Pierre Berloquin <email@hidden>
> 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 ?
>
--
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