Ios 将大类引用传递给其他类,性能下降

Ios 将大类引用传递给其他类,性能下降,ios,objective-c,Ios,Objective C,我有大的主类核心2k行。我有其他类UserDefaultsStorage负责存储数据 UserDefaultsStorage类的初始化我在Core的init中进行 问题是:我需要在其他5个类中使用UserDefaultsStorage,其中一个是SecondClass。我不想从UserDefaultsStorage创建singleton,所以我决定通过引用传递核心类,如下所示: 二等h: 二等舱 我通过5+类的核心参考是否有任何性能损失?有风险吗? 这是个好习惯吗? 您所描述的按引用传递在Obj

我有大的主类核心2k行。我有其他类UserDefaultsStorage负责存储数据

UserDefaultsStorage类的初始化我在Core的init中进行

问题是:我需要在其他5个类中使用UserDefaultsStorage,其中一个是SecondClass。我不想从UserDefaultsStorage创建singleton,所以我决定通过引用传递核心类,如下所示:

二等h:

二等舱

我通过5+类的核心参考是否有任何性能损失?有风险吗? 这是个好习惯吗?
您所描述的按引用传递在ObjC中是完全正常的,而且一次保留的成本非常便宜,可能还包括一次发布;最坏的情况可能是自动释放。通过引用传递的整个要点是,您只传递一个指针。您不执行任何复制


对于单个类来说,2000个ivars有点令人震惊,可能会建议您确实需要以更有意义的方式进行拆分,但这完全是一个关注点分离问题,从根本上说是一个可维护性问题,与性能无关。

2k行是什么意思?你是说有2000行源代码吗?对对象实例的引用占用相同的存储量,无论对象有多大。没有表现惩罚。您在这里所做的是依赖注入,许多人推荐它作为singleton@Paulw11核心类h有很多IVAR,谢谢你澄清你的应用程序/代码/性能有什么问题?我想这是误解了,我有40个IVAR和2K行。
-(id)init {
    self = [super init];

    self.storage = [[UserDefaultsStorage alloc]
                    initWithDefaults:[NSUserDefaults standardUserDefaults]];
}
 @interface SecondClass : NSObject    
- (id)initWithCore:(Core *)core;    
@end
@interface Core (Private)
  @property (nonatomic, readonly) id<UserDefaultsStorage> storage;
@end

@interface SecondClass ()
  @property (nonatomic, assign) Core *core;
@end

@implementation SecondClass

- (id)initWithCore:(Core *)core
{
  self. core = core;
  return self;
}

- (void)saveUserId:(NSString *)userId
{       
  [self.core.storage setString:userId forKey:@"some_key"];    
}


@end