나는Objective C에서 포인터를 비교할 때 내 코드에 어떤 문제가 있습니까?
static __weak ExplorerController *_rootExplorer = nil;
및
작동_rootExplorer = self;
NSAssert(_rootExplorer == self, @"????");
있습니다.
는 할당 해제, 나는 거짓이
bool b = _rootExplorer == self;
을하려고하지만, 디버거는 분명 두 객체가 동일하고 동일한 물리적 주소를 말한다. 내가
long n = (long) (_rootExplorer);
long n2 = (long) (self);
을 수행 할 때
나는 n
에 대한 n2
제로에 매우 큰 값을 얻는다. 그러나 _rootExplorer
은 nil
이 아닙니다. 그러나 다른 기능에서 동일한 작업을 수행하는 경우 dealloc
, n
및 n2
은 동일합니다.
내 코드에 어떤 문제가 있습니까? 스택의 내비게이션 컨트롤러 중 하나에 대한 약한 참조를 유지하려고 시도하고 unwinding 중에 리소스를 해제해야하지만 참조 된 컨트롤러 만이이를 수행 할 수 있습니다.