我有一个UIViewController被推入容器控制器,然后popup,并使用分配仪器,我可以看到视图控制器后被销毁。 但是,控制器的dealloc中的断点永远不会到达。 有谁知道为什么dealloc不被称为? ARC可以在不调用dealloc的情况下销毁对象? 另外,我禁用了NSZombies(有人说可能会导致dealloc不会触发)。 编辑: Dealloc并没有太多的function,只是打印到控制台上,并且永远不会被调用: – (void)dealloc { NSLog(@"Deallocating…"); } 我不能发布容器控制器 – 它是专有的,太复杂了。 Dealloc在一些控制器上被一致地调用,而不是其他的。 如果我能find时间,我会尝试发布一个简化版本来重现问题。 有什么办法来validationNSZombies被禁用? EDIT2 我正在张贴从仪器的截图; 它看起来像它正确地释放。
将Objective-C程序转换为Objective-C ARC时,出现以下错误: "cast of Objective-C pointer type 'NSString *' to C pointer type 'CFStringRef' (aka 'const struct __CFString *') requires a bridged cast " 代码如下: – (NSString *)_encodeString:(NSString *)string { NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)string, // this is line in error NULL, (CFStringRef)@";/?:@&=$+{}<>,", kCFStringEncodingUTF8); return [result autorelease]; } 什么是桥接演员?