gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:05:22 24 4
gpt4 key购买 nike

假设我有两个类(A 类、B 类)

A类.h

@interface ClassA : SomeSuperClass

@property (some Attributes) ClassB *classB;
@property (some Attributes) NSString *someString;

@end

现在我的问题:

我想访问 classB 实例中的 NSString someString。实现这一目标的最佳方法是什么?我在考虑两种解决方案:

在classB中创建一个协议(protocol),让classA响应这个协议(protocol)。此协议(protocol)中的唯一方法是访问/更改此字符串。

我想出的第二个解决方案是在创建 classB 的实例后将此字符串作为参数,然后 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

关于Objective-C:访问另一个类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13887047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com