0

我有一个自定义类,我想在 firstViewController 中“加载”它,然后通过 segues 从其他类访问它。我的问题是,我什至无法访问和更改 firstViewController 中的实例变量。不知何故,我“加载”它是错误的。这是我到目前为止使用的代码:

在 viewController.h 里面

@property (strong, nonatomic) myClass *newClass;

在 viewController.m 里面

@synthesize newClass;

然后我尝试通过以下方式访问它:

self.newClass.string = @"myString";
if(newClass.string == @"myString"){
  NSLog(@"didn't work");
}

好吧,我得到“没有工作”。这是为什么?当我写

myClass *newClass = [myClass new];

它确实有效。但是每次 ViewController 再次加载时,类及其属性都会被覆盖。

你会推荐什么?非常感谢你。

4

1 回答 1

2

就像 Kaan 说的,你忘了初始化你的类,你只声明并为它创建了一个指针,而不是实际的对象,在你的 ViewDidLoad 添加

self.newClass = [[myClass alloc] init];

它确实有效。但是每次 ViewController 再次加载时,类及其属性都会被覆盖。

那是因为每次加载特定的 Viewcontroller 时,您都在重新初始化该类。

如果您希望在所有程序中都有一个持久类,请寻找单例模式。

这用于当您只想拥有某个对象的 1 个实例的情况下,如果您尝试初始化该对象的另一个实例,您只会收到您已经拥有的那个。

PD:newClass.string == @"myString" 是错误的。

比较字符串时使用 isEqualToString 方法。

于 2012-06-23T09:06:19.917 回答