Objective-C:如何访问另一个类中对象的属性?

时间:2012-04-28 18:11:44

标签: objective-c class

我正在使用objective-c创建一个游戏,需要检测两个对象何时与帧相交。

我通常会使用

来检测到这一点
if (CGRectIntersectsRect(object1.frame, object2.frame)) {/*do something*/}

我唯一的问题是我为每个对象创建了单独的类文件。我在class1中有object1,在class2中有object2,所以我无法访问class2中的object1。

我尝试将对象作为参数传递但是收到了强烈的id错误,因此我假设不允许传递对象。我怎样才能访问class2中的object1.frame?我仍然是Objective-c的新手,所以我很感激任何建议!在此先感谢您,如果您需要更多信息,请与我们联系。

编辑:对不起,我不是很清楚。我在class1.h中声明了一个UIImageView或“object1”,并在整个class1.m文件中使用。

我有另一个类,我在class2.h和class2.m中声明了另一个UIImageView“object2”。在class2.m文件中的某个时刻,我需要查看object1和object2是否相交。

1 个答案:

答案 0 :(得分:1)

实际上,因为它们都是图像视图,它们都不应该真正处理相互交叉。更好的路由是让第三个类与前两个类中的每个类建立连接,这两个类负责检测冲突或创建一个C函数,该函数只接受符合适当的任何两个UIImageView实例。设计的协议,如果有碰撞,告诉对象处理它。

void checkForCollision(object1, object2) {
    if (CGRectIntersectsRect(object1.frame, object2.frame)) {
        [object1 handleCollisionWith:object2];
        [object2 handleCollisionWith:object1];
    }
}

有了这样的东西,以后你需要检测涉及第三或第四个物体的碰撞,这会让生活更轻松。两个对象确实需要具有相同的超视图,否则这将无效。

此外,您可以传递对象,但通常通过引用传递。为了让object1告诉或询问object2,它必须有一个指向它的指针,反之亦然。