title: Keeps giving me incorrect implementation with my singleton
body: <p>I decided to try and make a Singleton for use with locations. I have got what I think to be, the singleton working correctly however I have one error that is now appearing. It tells me that my implementation is incomplete. It is the only error it is giving me and I am sure it is something wrong with either my view header or m file. I have tried a few things now and cannot get it to work. What am I missing here?</p>
  
  <p>Here is my header</p>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  
  @interface TrackerViewController : UIViewController
  -(void) locationUpdate;
  end
  </code></pre>
  
  <p>And here is my implementation file:</p>
  
  <pre><code>#import "TrackerViewController.h"
  #import "MyLocation.h"
  
  @implementation TrackerViewController
  
  NSString *LatCoord;
  NSString *LongCoord;
  
  - (void)didReceiveMemoryWarning
  {
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
  }
  
  #pragma mark - View lifecycle
  
  - (void)viewDidLoad
  {
    [super viewDidLoad];
    [LocationController sharedInstance].locDelegate = (id)self;
    // Do any additional setup after loading the view, typically from a nib.
  }
  
  - (void)viewDidUnload
  {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
  }
  
  - (void)viewWillAppear:(BOOL)animated
  {
    [super viewWillAppear:animated];
  }
  
  - (void)viewDidAppear:(BOOL)animated
  {
    [super viewDidAppear:animated];
  }
  
  - (void)viewWillDisappear:(BOOL)animated
  {
    [super viewWillDisappear:animated];
  }
  
  - (void)viewDidDisappear:(BOOL)animated
  {
    [super viewDidDisappear:animated];
  }
  
  - (void)locationUpdate:(CLLocation *)location {
      [[LocationController sharedInstance] setLocation:location];
      LatCoord  = [NSString stringWithFormat:@"%lf", location.coordinate.latitude];
      LongCoord = [NSString stringWithFormat:@"%lf", location.coordinate.longitude];
  }
  
  - (BOOL)shouldAutorotateToInterfaceOrientation (UIInterfaceOrientation)interfaceOrientation
  {
    // Return YES for supported orientations
    return YES;
  }
  
  -(IBAction)CheckIn:(id)sender 
  {
    [self locationUpdate];
  }
  
  @end
  </code></pre>
  
  <p>My singleton header is as follows:</p>
  
  <pre><code>#import &lt;Foundation/Foundation.h&gt;
  #import &lt;CoreLocation/CoreLocation.h&gt;
  
  @protocol LocationControllerDelegate &lt;NSObject&gt;
  @required
  - (void)locationUpdate:(CLLocation*)location;
  @end
  
  @interface LocationController : NSObject &lt;CLLocationManagerDelegate&gt; {
  
    __unsafe_unretained id &lt;LocationControllerDelegate&gt; _locDelegate;
  
    CLLocationManager* locationManager;
    CLLocation* location;
    id locDelegate;
  }
  
  @property (nonatomic, retain) CLLocationManager* locationManager;
  @property (nonatomic, retain) CLLocation* location;
  @property (nonatomic, assign) id &lt;LocationControllerDelegate&gt; locDelegate;
  
  + (LocationController*)sharedInstance;
  
  @end
  </code></pre>
  
  <p>My singleton implementation is as follows:</p>
  
  <pre><code>#import "MyLocation.h"
  
  static LocationController* sharedCLDelegate = nil;
  
  @implementation LocationController
  @synthesize locationManager, location, locDelegate = _locDelegate;
  
  - (id)init
  {
   self = [super init];
   if (self != nil) {
     self.locationManager = [[CLLocationManager alloc] init];
     self.locationManager.delegate = self;
     self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
   }
   return self;
  }
  
  - (void)dealloc
  {
   /* ... */
  }
  
  #pragma mark -
  #pragma mark CLLocationManagerDelegate Methods
  - (void)locationManager:(CLLocationManager*)manager
     didUpdateToLocation:(CLLocation*)newLocation
         fromLocation:(CLLocation*)oldLocation
  {
   /* ... */
  }
  
  - (void)locationManager:(CLLocationManager*)manager
      didFailWithError:(NSError*)error
  {
    /* ... */
  
  }
  
  #pragma mark -
  #pragma mark Singleton Object Methods
  
  + (LocationController*)sharedInstance {
    @synchronized(self) {
      if (sharedCLDelegate == nil) {
      }
    }
    return sharedCLDelegate;
  }
  
  + (id)allocWithZone:(NSZone *)zone {
    @synchronized(self) {
      if (sharedCLDelegate == nil) {
          sharedCLDelegate = [super allocWithZone:zone];
          return sharedCLDelegate;  
      }
    }
    return nil;
  }
  
  - (id)copyWithZone:(NSZone *)zone
  {
    return self;
  }
  
  
  @end
  </code></pre>
  
  <p>What am I missing or doing wrong here?</p>