iOS单例模式,初始化总是nil

Mr黄黄黄黄黄先森 2019-08-08 11:32:15
声明了一个baseBadgeManager
static TTBaseBadgeManager *manager = nil;

+ (instancetype)getInstance
{
static dispatch_once_t badgeManager;
dispatch_once(&badgeManager, ^{
manager = [[self alloc] init];
});
return manager;
}


然后有一个继承自baseManager的badgeManager
static TTBadgeManager *manager = nil;

@implementation TTBadgeManager

+ (instancetype)getInstance
{
manager = [super getInstance];
return manager;
}


然后每次调
[TTBadgeManager getInstance]
的时候,得到的manger总是为nil,如果我用
TTBaseManager *a = [[self alloc] init]
这个a是有值的,但是一旦再赋值给manager,manger就变成nil了,百思不得其解
...全文
474 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dirdirdir3 2019-08-23
  • 打赏
  • 举报
回复
在其他地方有没有对manager赋值过?
言子玉 2019-08-19
  • 打赏
  • 举报
回复
问题点:子类申明一个全局并且与父类相同命名的静态变量。并使用此静态变量接受父类的单例对象。 解决方法:在重载方法里,申明局部变量接受父类的单例对象即可。
三好夫人 2019-08-10
  • 打赏
  • 举报
回复
我试了下代码,通过打印控制台都显示了 父类中的nslog打印的----<TTBadgeManager: 0x600000a2cf60>
子类中nslog打印<TTBadgeManager: 0x600000a2cf60> ---viewcontroller中调用打印----<TTBadgeManager: 0x600000a2cf60>。xcode.10.21

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧