Objective C에서 런타임에 객체가 유지되는지, 다른 객체가 해당 객체를 보유 할 수 있는지를 결정하는 방법이 있습니까? Objective-C : 어떤 다른 객체가 특정 객체를 보유하고 있는지 알려주는 방법?
또는 문구에
이 약간 다르게 :개에 가죽 끈이는 가죽 끈을 잡고 누가 알 수있다 있다면?
는이 가상 시나리오 있다고 가정 :MyObjectOne을
및
MyObjectTwo의 구현 내부 MyObjectTwo
는
- (void)setFirstObject:(MyObjectOne *)firstObj {
[firstObj retain];
// do stuff with object and under certain conditions don't release it
}
과 같이 이제 다른 곳에서 코드입니다 다른 것이있을 수있다. 이때 개체
// Create the two objects
myFirstObject = [[MyObjectOne alloc] init];
mySecondObject = [[MyObjectTwo alloc] init];
// ...
// Some process requires retaining the first object
[myFirstObject retain]
// ...
// some other place requires passing the first object to the second object
// at which point the first object is retained by the second object
[mySecondObject setFirstObject:myFirstObject];
// ...
// further on the first object is released
[myFirstObject release]
를 만들고 유지에 대한 이론적 myFirstObject 그것이 MyObjectTwo 안에 유지 되었기 때문에 1의 카운트를 유지해야한다. 그것은 또한 객체를 보유하고있는 것이 무엇인지 알 수 있습니까? 즉, myFirstObject의 보유 수는 1이고 현재 mySecondObject가 보유하고 있음을 알 수 있습니다. 이 정보를 찾는 편리한 방법이 있습니까?
if (MyObjectTwo is retaining MyObjectOne)
{
// do something in particular
}
더이 몇 단계를 수행하고 myFirstObject가 유사한 행동을 다른 개체 MyObjectThree 및 MyObjectFour이 있다는 것을 1보다 더 세고 유지 한 의견 :이 사이비 코드처럼 작동 조건 코드를 가질 수 있습니다 MyObjectTwo에는 MyObjectOne을 유지할 수있는 메서드가 있습니다. 그리고 이제는 MyObjectTwo, MyObjectThree 및 MyObjectFour 중 일부는 첫 번째 객체를 보유하고있는 인스턴스와 그렇지 않은 인스턴스가 여러 개 있다고 가정합니다. 누가 그리고 무엇을 지키고 있는지 알 수있는 방법이 있습니까?
아직 배우기 때문에 내 구문이 100 % 정확하지는 않지만 잘하면 문제는 명확합니다.
응답 해 주셔서 감사합니다. 나는 특히 아무것도하려고하지 않았습니다. 이것이 이론적으로 가능한지 궁금합니다.보유자의 배열 목록에 자신을 추가하는 개념은 의미가 있습니다. –