不了解共享实例

时间:2016-03-29 21:22:58

标签: ios objective-c

我对如何使用共享实例感到困惑。

这是我的设置:

+ (ViewController *)sharedInstance {

   static ViewController *_sharedInstance = nil;
   if (_sharedInstance == nil) {
       _sharedInstance = [[ViewController alloc] init];
   }
   return _sharedInstance;
}

我在ViewController.h文件中也有一个名为的属性 @property (nonatomic, retain) CBPeripheral * selectedPeripheral;并在ViewController.m文件CBPeripheral * _selectedPeripheral;的界面下,我确保synthesize them

所以,每当我这样做。它有效。

 [ViewController sharedInstance].selectedPeripheral = _selectedPeripheral;
 NSLog(@"_sharedInstance %@", [[ViewController sharedInstance] selectedPeripheral]);

但如果我这样做?没有做上面的行。它返回null? 我认为合成会成功,所以我不必再分配它?

 NSLog(@"_sharedInstance %@", [[ViewController sharedInstance] selectedPeripheral]);

1 个答案:

答案 0 :(得分:0)

您没有为_selectedPeripheral分配任何值,因此没有任何价值。

尝试在单例初始值设定项中设置_selectedPeripheral

我对代码一无所知,但这意味着需要选择一些内容。您的选择代码中也可能存在问题,但是您的课程不会因为它是单身而神奇地创建对象; - )

修改

@synthesize仅创建实例变量(下划线),因此可以从类中获取。请注意,只有在覆盖getter和setter时才需要这样做。

另请注意,您发布了单身人士的getter并且您遇到了属性问题。请提供我们需要的代码,以便在不猜测的情况下帮助您。