Ios 将所有者引用传递给已创建的对象

Ios 将所有者引用传递给已创建的对象,ios,objective-c,memory-management,Ios,Objective C,Memory Management,我需要将视图控制器的引用传递给它创建的一个对象。下面是我实例化对象的代码 //Method in OwnerClass - (void) someMethod{ SomeObject *obj = [[SomeObject alloc] init]; obj.instanceVar = self.iVar; } 现在在SomeObject中,我想访问创建它的所有者(OwnerClass的实例) //Method in SomeObject - (void) callback{

我需要将视图控制器的引用传递给它创建的一个对象。下面是我实例化对象的代码

//Method in OwnerClass
- (void) someMethod{
    SomeObject *obj = [[SomeObject alloc] init];
    obj.instanceVar = self.iVar;
}
现在在SomeObject中,我想访问创建它的所有者(OwnerClass的实例)

//Method in SomeObject
- (void) callback{
    [ownerObj callMethod] //ownerObj is the instance of OwnerClass that created an instance of SomeObj
}
我想知道如何在SomeObject的实例中访问OwnerClass的实例。当然,我可以简单地在某个对象中编写一个属性,比如

@property(nonatomic) OwnerClass *ownerReference;
当我初始化某个对象并从那里访问它时分配它

我想知道的是,是否有任何标准的方法来获取所有者。类似于

self.parentViewController

这是苹果获取特定视图控制器父级的标准方法。

对于Objective C或iOS SDK中的对象,没有通用的、正式的“所有权”概念。因此,没有标准的“魔法”方式来做你想做的事情。

将引用从一个视图传递到另一个视图是错误的。。
若要在另一个控制器中调用方法,可以使用协议和委托

是的,有几种方法,如委托、块回调、通知。这不是关于转移所有者,但它们是访问其他类方法或属性的方式。@trick14当然,我可以使用委托、回调等,但它们都需要我进行一些额外的编码。此外,我不是在谈论其他类,而是指创建对象的所有者。正如我在上一次声明中所说,苹果公司是否提供了任何标准机制来解决这个问题。@NazMir,“但它们都需要我提供一些额外的编码”,所以你是说你已经知道一些解决问题的有效方法,但是你太懒了,不愿意做任何事情吗?@holex如果你没有任何建设性的东西,那么最好远离这个问题。如果你仔细阅读这个问题,你可能会明白我在寻找一种标准的方法。这是苹果公司倡导的并被认为是最佳实践的东西。在这种情况下,你能建议一个好的方法来解决我的问题吗?还是我应该将所有者的弱引用传递给创建的对象?我个人在这种情况下都会使用你自己建议的基于属性的方法。您是否需要弱引用或强引用可能取决于特定的情况,即您拥有的对象是否可能比其所有者更久,以及它可以如何应对所谓的“孤立”。Markus-感谢您的回答和评论。我会等一两天,看看是否有人提倡一种不同的/神奇的方法。如果不是的话,我会接受你的回答…为什么从一个观点到另一个观点的引用是错误的呢?首先,有对象是不明智的。。第二,当你只需要一个方法时,为什么要拥有所有的对象第三,这个对象将一直在内存中,直到主对象在内存中“循环”时,第一个才是正确的?在20世纪60年代…?那么第二和第三个呢?第二,当我们委派一个班级时,你认为我们通过了什么?是的,我们只传递引用,这是没有错的——但是当我们将引用从一个类传递到另一个类时,还有成千上万的其他情况;第三,当对象没有更多的强引用时,对象被释放。。。总的来说,我认为您可能对引用的含义有些困惑,您可能还需要更新有关内存管理的知识。这不再是Turbo Pascal 6.0了。