Re: Pb implementing shared instance
Re: Pb implementing shared instance
- Subject: Re: Pb implementing shared instance
- From: Robbie Haertel <email@hidden>
- Date: Sat, 20 Nov 2004 09:04:00 -0700
First of all, get rid of your "static" statement that is outside of
the class because you aren't using it in the code. Second, since
sharedInstance is a class method, you'll need to either do [[aData
class] sharedInstance], or the easier [classA sharedInstance].
Lastly, I'm not sure your implementation of sharedInstance will do
what you want. It creates a brand new instance of classA. So, if an
instance classA already exists and you want classB to get that
instance, it won't work because a new one will be created instead.
But if you don't have any instances of classA yet, and you want classB
to create a new instance (and then any other calls to the same class
method will used that same instance), then your code is fine.
Robbie
On Sat, 20 Nov 2004 15:18:37 +0100, Kubernan @ 10191 Technologies
<email@hidden> wrote:
> Hello,
>
> After reading the archive mailing list (and some web pages) i'm still
> not able
> to implement a shared instance (!).
> I have a compilation warning and i don't understand why :
>
> compiling classB.m
> " classA may not respond to '-sharedInstance' "
>
> What i need is to establish a reference of class A in class B.
> If you have an idea ...
>
> Here's my code :
>
> file classA.h
> @interface classA : NSObject {
>
> // other...
> }
> +(classA *)sharedInstance;
> // other ..
> @end
>
> file classA.m
> #import classA.h
>
> @implementation classA
> static classA *_sharedInstance = nil;
> +(classA *)sharedInstance
> {
> static classA *_sharedInstance = nil;
> if (_sharedInstance == nil)
> _sharedInstance = [[self alloc) init];
> return _sharedInstance;
> }
> @end
>
> I use the shareInstance here :
> file classB.h
> #import classA.h
> @interface classB : NSObject {
> classA *classARef;
> // other...
> }
> -(void)setAReferanceToClassA:(classA *)aData;
>
> file classB.m
> #import "classB.h"
> @implementation classB
> -(void)setAReferanceToClassA:(classA *)aData
> {
> classARef = [aData sharedInstance]; // <-- THE COMPIL WARNING (!?)
> }
> @end
>
> Thanks a lot,
> K.
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Cocoa-dev mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
>
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden