【发布时间】:2012-12-14 22:17:45
【问题描述】:
假设我有两个类(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可以存储对它的引用并可以随时更改它。
这两种解决方案对我来说似乎都有效(没有测试它,只是假设它),但在我看来它们似乎有点矫枉过正(尤其是第一个)
请告诉我最好的方法,谢谢。
【问题讨论】:
-
您能提供一个ClassB的示例接口吗?就像 CodaFi 建议的那样,弱引用应该没问题。只要你有类似的东西: \@property (nonatomic, retain) NSString *someString;在您的 .h 文件中定义,并在您的 .m 文件中定义 \@synthesize someString (以及任何覆盖),您应该是金色的。我认为;-)
-
请注意,您不能“存储引用”到字符串然后更改它并期望更改传播到您获得引用的位置。 NSSting 是不可变的,当您“更新”一个时,您实际上将其替换为具有不同地址的新的。
标签: objective-c ios