0

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

@property (strong, retain) NSManagedObject *form;

在 B 类中,我尝试过:

#import "ClassA"

@interface ClassB  ()
{
    ClassA *classA;
}

然后在 viewDidLoad 我有:

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

但是每次它都为零,即使当我在 classA 上(它是一个视图控制器)时,它肯定是有价值的。

编辑:

所以我按照 BlackRider classA 给出的例子

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

B类

MyManager *sharedManager = [MyManager sharedManager];

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

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

4

3 回答 3

1

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

无论你在哪里实例化你的ClassB类,设置它的 classA 属性使用classB.classA = self;

例如:

- (void)loadMyForm {
    ClassB *classB = [ClassB alloc] init];
    classB.classA = self;
}
于 2013-11-13T21:46:32.680 回答
0

由于您使用故事板(并且可能是 segues),因此您可以执行以下操作:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get a reference to the destination view controller
    if([[segue destinationViewController] isKindOfClass:[ClassA class]]) {
        ClassA *vc = [segue destinationViewController];

        // now you can access vc.form
    }
}
于 2013-11-13T21:33:02.587 回答
0

我最终使用了我的 appDelegate 并使用它来存储一个“全局”变量。

于 2013-11-18T16:45:12.250 回答