gpt4 book ai didi

ios - 难以访问另一个类的属性

转载 作者:行者123 更新时间:2023-11-29 03:29:48 25 4
gpt4 key购买 nike

我觉得我一定是以错误的方式解决这个问题的,而且可能有一个我似乎找不到的非常简单的解决方案。在 ClassA.h 中我有:

@property (strong, retain) NSManagedObject *form;

在B类中我尝试过:

#import "ClassA"

@interface ClassB ()
{
ClassA *classA;
}

然后在 viewDidLoad 中我有:

NSLog(@"form::%@", classA.form);

但它每次都为零,即使当我在 classA(它的 View Controller )上时它肯定有一个值。

编辑:

所以我按照 BlackRider 给出的例子进行操作A类

 MyManager *sharedManager = [MyManager sharedManager];
sharedManager.someProperty = self.form;

B类

MyManager *sharedManager = [MyManager sharedManager];

NSLog(@"globalform::%@", sharedManager.someProperty);

并且我仍然在日志打印中得到空值。

最佳答案

您确实应该在接口(interface)中使用 @property (nonatomic, strong) ClassA *classA; 使 ClassA 成为 ClassB 的属性,这将为您生成一个 setter 和 getter。像您所做的那样使用普通 C 变量意味着您只能使用 -> 指针间接访问它,并且默认情况下它将受到保护。大多数情况下,人们在其实现的类扩展中使用这些类型的变量,但在其接口(interface)上使用属性。

无论在何处实例化 ClassB 类,都使用 classB.classA = self; 设置其 classA 属性

例如:

- (void)loadMyForm {
ClassB *classB = [ClassB alloc] init];
classB.classA = self;
}

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

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