【问题标题】:Trouble putting data into global variables将数据放入全局变量时遇到问题
【发布时间】:2014-02-24 03:09:24
【问题描述】:

我有几个需要访问相同变量的方法实现。例如,我有一个变量,我将用户的名字放入其中,并且我需要能够在同一个视图控制器内的所有各种方法实现中访问此变量。

我创建了一个名为“PotentialFriend”的自定义类,它是 NSObject 的子类。 PotentialFriend 的头文件还包含一个名为“name”的 NSString 属性。

在我的视图控制器的头文件中,我创建了一个名为“potentialFriend”的PotentialFriend 类的实例。我可以在 View Controller 的主文件中成功键入“_potentialFriend.name”,但如果我将其设置为等于 @"Steve" 之类的内容,它会在控制台中显示为 (null)。

但是,如果我执行以下操作,并实际初始化一个局部变量,我可以成功地获取该变量来保存数据:

PotentialFriend *potentialFriend = [[PotentialFriend alloc]init];

potentialFriend.name = @"Steve";

但这对我不起作用,因为我在这个 VC 中有另一个方法实现来设置 UITableView 的设置,我需要能够访问“potentialFriend.name”的值。

我知道如何做到这一点的唯一方法是使用全局变量,但就像我说的那样,我无法让全局变量实际保存数据。

任何想法为什么我不能让全局变量工作?

编辑:

我刚去进行了一次测试。我在 View Controller 的头文件中创建了一个 NSString 对象,并且能够成功地将其保存为全局变量,如下所示:

_potentialFriendz = @"Steve";

所以这一定与我创建了自己的名为 PotentialFriend 的自定义类有关,但我仍然不明白为什么这不起作用。

【问题讨论】:

    标签: ios objective-c uitableview scope global-variables


    【解决方案1】:

    听起来您没有为potentialFriend 分配和初始化对象。只是在标题中将其声明为属性并不会在其中实例化对象。它只是一个属性,可以容纳指定类型的对象。

    您需要执行以下操作:

    self.potentialFriend = [[PotentialFriend alloc] init];

    viewDidLoad: 或其他一些初始化方法中(如initWithCoder:

    在其他语言中,在没有实例化对象的情况下设置 potentialFriend.name 会抛出某种异常或其他东西,但 Objective-C 允许将消息发送到 nil(当您使用点语法时,您正在执行与 [potentialFriend setName:@"string"] 等效的操作)。

    【讨论】:

    • 这非常有效,我猜过去几天我的全局变量很幸运。感谢您的帮助。
    猜你喜欢
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多