假设我有两个类(ClassA,ClassB)
A.h 级
@interface ClassA : SomeSuperClass
@property (some Attributes) ClassB *classB;
@property (some Attributes) NSString *someString;
@end
现在我的问题:
我想访问类B实例中的NSString someString。实现这一目标的最佳方法是什么?我在考虑两种解决方案:
在类 B 中创建一个协议,并让类 A 响应此协议。此协议中的唯一方法是访问/更改此字符串。
我想出的第二个解决方案是在创建类 B 的实例后将此字符串作为参数,然后 classB 可以存储对它的引用,并可以随时更改它。
这两种解决方案对我来说似乎都有效(没有测试它,只是假设它),但在我看来它们也有点矫枉过正(尤其是第一个)
让我知道最好的方法是什么,谢谢。
如果你对 B 的父级 (A) 进行了弱引用,那么你可以安全地访问它的属性,而无需过度杀伤或创建保留周期。
@interface ClassA : SomeSuperClass
@property (some Attributes) ClassB *classB;
@property (some Attributes) NSString *someString;
@end
@implementation
-(id)init {
if (self = [super init]) {
_classB = [[ClassB alloc]initWithParent:self];
}
}
@end
@class ClassA;
@interface ClassB : SomeSuperClass
@property (nonatomic, weak) ClassA *classA;
-(id)initWithParent:(ClassA*)parent;
@end
#import "ClassA.h"
@implementation
-(id)initWithParent:(ClassA*)parent {
if (self = [super init]) {
_classA = parent;
NSLog(@"%@", self.classA.someString); //perfectly legal
}
}
@end