代码之家  ›  专栏  ›  技术社区  ›  Johannes Jensen

将类的副本发送到视图类以便它可以呈现它?(iPhone)

  •  0
  • Johannes Jensen  · 技术社区  · 14 年前

    我在为iphone做游戏,我有一个叫做robot的班级。

    然后我有一个名为View的类,它呈现所有内容。

    我想发送一份我在视图控制器中定义的机器人的副本,然后发送给gameview(即view*gameview),如下所示:

    robot = [Robot new];
    [gameView setRobot: [robot copy]];
    

    我试着做一个副本,但那不起作用,我也可以用一个指向robot(&robot)的指针来做,但有时它会崩溃?

    我在我的视图中尝试了这个。h@interface definition:

    @property (copy) Robot* robot;
    

    但我得到了错误

    /RobotsAdventure/Classes/View.h:24: error: setter '-robot' argument type does not match property type
    

    :

    帮助?我是个新手,呵呵。

    1 回复  |  直到 14 年前
        1
  •  0
  •   TechZen    14 年前

    为了复制一个对象,它的类必须实现 NSCopying 协议。

    Memory Management Programming Guide for Cocoa

    最简单的方法是:

    查看h

    #import "Robot.h"
    @property(nonatomic,retain) Robot *robot.
    

    然后在视图控制器中将其设置为:

    // myView is of class View.h
    myView.robot=self.robot;
    

    顺便说一下,命名一个类“视图”只是在某个点上请求命名冲突。更糟的是,当你回来的时候,你永远不会记得这个班几个月来都在做什么。你也不能搜索它。而是使用高度描述性的名称,例如robotdisplayview_myprojectname。有了自动完成功能,只需输入一个短名称就可以了。