假设我有两个类(ClassA,ClassB)
ClassA.h
@interface ClassA : SomeSuperClass
@property (some Attributes) ClassB *classB;
@property (some Attributes) NSString *someString;
@end
现在我的问题:
我想访问classB实例中的NSString someString。什么是实现这一目标的最佳方式? 我在想这两个解决方案:
在classB中创建协议,让classA响应此协议。该协议中唯一的方法是访问/更改此字符串。
我提出的第二个解决方案是在创建classB实例后将此字符串作为参数,然后classB可以存储对它的引用,并且可以随时更改它。
这两个解决方案似乎对我有用(没有测试它,只是假设它),但它们在我看来有点矫枉过正(特别是第一个)
让我知道最好的方法,谢谢。
答案 0 :(得分:2)
如果您对B&#39的父级(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