Objective-C:访问另一个类的属性



假设我有两个类(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

最新更新