Ios 将数据放入全局变量时遇到问题
我有几个方法实现需要访问相同的变量。例如,我有一个变量,我把用户的名字放在其中,我需要能够在同一个视图控制器中的所有方法实现中访问该变量 我创建了一个名为“PotentialFriend”的自定义类,它是NSObject的一个子类。PotentialFriend的头文件还包含一个名为“name”的NSString属性 在视图控制器的头文件中,我创建了一个名为“PotentialFriend”的PotentialFriend类的实例。我可以在视图控制器的主文件中成功地键入“_potentialFriend.name”,但如果我将其设置为与@“Steve”等值相等,则在控制台中显示为(null) 但是,如果我执行以下操作,并实际初始化一个局部变量,我可以成功地获取该变量以保存数据:Ios 将数据放入全局变量时遇到问题,ios,objective-c,uitableview,scope,global-variables,Ios,Objective C,Uitableview,Scope,Global Variables,我有几个方法实现需要访问相同的变量。例如,我有一个变量,我把用户的名字放在其中,我需要能够在同一个视图控制器中的所有方法实现中访问该变量 我创建了一个名为“PotentialFriend”的自定义类,它是NSObject的一个子类。PotentialFriend的头文件还包含一个名为“name”的NSString属性 在视图控制器的头文件中,我创建了一个名为“PotentialFriend”的PotentialFriend类的实例。我可以在视图控制器的主文件中成功地键入“_potentialFr
PotentialFriend *potentialFriend = [[PotentialFriend alloc]init];
potentialFriend.name = @"Steve";
但这对我不起作用,因为我在这个VC中有另一个方法实现,它设置UITableView的设置,我需要能够访问“potentialFriend.name”的值
我知道的唯一方法是使用全局变量,但就像我说的,我不能让全局变量实际保存数据
知道为什么我不能让全局变量工作吗
编辑:
我只是去做了个测试。我在视图控制器的头文件中创建了一个NSString对象,并成功地将其作为全局变量保存数据,如下所示:
_potentialFriendz = @"Steve";
所以这一定与我创建了自己的名为PotentialFriend的自定义类有关,但我仍然不明白为什么这样做不起作用。听起来好像你没有为
PotentialFriend
分配和初始化对象。仅将其声明为标头中的属性不会实例化其中的对象。它只是一个可以保存指定类型对象的属性
您需要执行以下操作:
self.potentialFriend=[[potentialFriend alloc]init]代码>
在viewdiload:
或其他一些初始化方法中(如initWithCoder:
)
在其他语言中,在没有实例化对象的情况下设置potentialFriend.name
会引发某种异常或其他情况,但Objective-C允许将消息发送到nil(当使用点语法时,这相当于[potentialFriend setName:@“string”]
),我想在过去的几天里,我对我的全局变量感到很幸运。谢谢你的帮助。