0

我只是想知道我应该在哪里设置变量的值以在我的所有方法中使用。例如,假设在我的 .h 中我说: @property NSString *name;然后在 .m 中合成它。我在哪里为它分配一个值,以便在我的函数中,比如-(NSString *)changeUsername:(NSString *) changesand -(void)deleteUsername,我可以访问该数据?

4

3 回答 3

1

main()是在命令行程序中调用的第一件事。你不会在那里(或从 调用的地方main())做吗?

于 2012-06-01T18:38:04.993 回答
1

由于您在谈论属性,因此您必须有一个要实例化的类。该类的指定初始化程序(-init或类似的)是设置属性和/或实例变量的正确位置。

Cocoa Touch 应用程序延迟某些初始化标记的唯一原因-viewDidLoad是视图控制器在初始化时不会加载它们的视图,并且某些属性或 ivars 与将要加载的视图相关。在加载(或创建)视图之前,显然无法设置这些东西,因此-viewDidLoad成为设置这些东西的最佳场所。

于 2012-06-01T18:43:14.133 回答
0

好吧,您可以在您的类的初始化程序中这样做,实际上,这将是 C++ 或 Java 中的方法。在 Objective-c 中,您通常使用惰性实例化,最好的地方是在该属性的 getter 中。

如果有人为属性赋值,则调用 setter 并且一切正常。如果有人询问该值并且尚未设置(为零),您可以创建对象和/或在 getter 中分配默认值。

// Override accessor for name
- (NSString*)name
{
    if (!_name) {
        _name = @"unknown";
    }

    return _name;
}

访问器方法是您应该直接访问实例变量的唯一地方。

于 2012-06-01T18:39:17.710 回答