有一个对象(secondObject),它是NSObject子类的实例,并且在secondObject内,我想获得对实例化secondObject的对象(firstObject)的引用。
例子:
在FirstObject.m中(UIViewController的子类)
SecondObject *secondObject = [[SecondObject alloc] init];
在SecondObject.m中
@implementation SecondObject
- (id) init {
self = [super init];
NSLog(@"Parent object is of class: %@", [self.parent class]);
return self;
}
@end
我在寻找类似于viewControllers的.parentViewController属性的东西
我一直在研究KeyValueCoding,但找不到解决方案。
我实现的解决方法是在secondObject.m中创建一个initWithParent:(id)parent方法,然后在实例化时传递self。
在SecondObject.m中
@interface SecondObject ()
@property id parent;
@end
@implementation SecondObject
- (id) initWithParent:(id)parent {
self = [super init];
self.parent = parent;
NSLog(@"Parent object is of class: %@", [self.parent class]);
return self;
}
@end
然后在fisrtObject.m中实例化对象,如下所示
SecondObject *secondObject = [[SecondObject alloc] initWithParent:self];
有更简单的方法吗?
RGDS .... Enrique
对象没有任何指向创建它的对象的指针。
您的initWithParent:方法可以使用,但是您可能要考虑一下为什么您的对象需要了解其创建者,以及是否没有更好的方法来完成您要完成的任务。
同样,您可能希望将父属性设为弱属性,或者最终将在所有位置创建保留周期。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句