【问题标题】:How do I use the same property for two classes?如何为两个类使用相同的属性?
【发布时间】:2014-04-15 07:31:29
【问题描述】:

基本上,我在一个名为 MyClassXY 的类中有五个属性。在我的 MyClassXY.m 中,我有一个每 0.1 秒调用一次的 nstimer,并将这些属性设置为我将这些属性设置为来自 Main_game_scene 视图控制器类的任何值。但是我在 Main_Select_level 视图控制器中分配了 MyClassXY。解决这个问题的唯一方法是将 MyClassXY 对象从 Main_Select_level 传递到 Main_game_scene 视图控制器,或者有什么方法可以解决这个问题。我不想分配一个全新的 MyClassXY 对象,因为它有一大堆其他变量,两个类都需要与之交互。也许是类方法?

抱歉新手问题。

【问题讨论】:

  • 没有真正解决您的问题。计时器是否仅用于将值从一个类复制到另一个类,因为您不确定该怎么做?
  • 哦,也许我应该这么说,但我正在使用 Gamecenter 制作多人游戏。我的意思是将结构的这些成员设置为属性的值,然后每 0.1 秒将结构发送到另一个设备。
  • 那么传递实例有什么问题?
  • 没有错,我不知道该怎么做。
  • 如何传递实例?

标签: ios objective-c class properties game-center


【解决方案1】:

您可以将 MyClassXY 修改为 singleton。然后,您可以在程序中任何您需要的地方获得对它的引用,但它始终是同一个实例。例如,[UIApplication sharedApplication] 是一个单例。

【讨论】:

  • 如何向单例添加数据?在指南中的任何地方都找不到它。
  • galloway.me.uk/tutorials/singleton-classes 你使用:YourClass *c = [YourClass sharedInstance];
  • 只需像添加任何其他属性一样将属性添加到 .h 文件中的类
【解决方案2】:

这取决于 Main_game_scene 和 Main_Select_level 是如何关联的。从第一个到第二个是否有segue?模态还是推送?哪个先来?然后您可以将对象从源视图控制器传递到目标视图控制器。 如果您的所有应用都需要一个(并且只有一个)类 MyClassXY 实例,请使用 Singleton。

【讨论】:

    【解决方案3】:

    您目前使用以下方式创建和展示游戏:

    ViewController *viewcont = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
    [view2 presentViewController:viewcont animated:NO completion:nil];
    

    要通过管理您的游戏中心交互的课程(使用您的计时器),您需要做的就是:

    ViewController *viewcont = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
    viewcont.scoreController = self.scoreController;
    
    [view2 presentViewController:viewcont animated:NO completion:nil];
    

    其中scoreControllerViewController 上的一个属性,用于保存对游戏中心交互控制器的引用,self.scoreController 是您之前创建的该类的实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多