jjzjj

ios - 弹出 UIViewController 后,MKMapView autorelease 不调用 dealloc

我在A类中有以下代码:UIViewController*vc=[selfviewControllerForItem:item];我的应用程序委托(delegate)中的viewControllerForItem方法返回基于我的项目的UIViewController,即vc=[[[MyCustomViewControlleralloc]init]autorelease];returnvc;然后我推送ViewController:[self.navigationControllerpushViewController:vcanimated:YES];我试图推送的这个VC是一个MKMapVi

ios - 如何访问类类别中的 dealloc 方法?

我需要在类别的dealloc方法中执行一个操作。我试过swizzling,但这不起作用(这也不是一个好主意)。如果有人问,答案是否定的,我不能使用子类,这是专门针对类别的。我想使用[NSTimerscheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]或[selfperformSelector:withObject:afterDelay:]和在dealloc上取消它。第一个问题是NSTimer保留了我不想要的目标。[selfperformSelector:withObject:afterDelay:]不保留,但我

iphone - [CFNumber 发布] : message sent to deallocated instance

当我从HistoryCoreData对象记录/请求值时,下面的代码返回以下错误:-[CFNumberrelease]:messagesenttodeallocatedinstance0x17ea2a90我最初认为是其他地方存在问题,并花了无数小时尝试调试它,但没有成功。经过进一步测试,我已将崩溃确定为从HistoryCoreData对象请求某些值。任何人都可以看到为什么要释放对象值的任何问题吗?[[DocumentHandlersharedDocumentHandler]performWithDocument:^(UIManagedDocument*document){if(!self

objective-c - Objective-C 消息被发送到地址为 : 0x75d52a0 的已释放对象(僵尸)

我是iOS开发的新手,非常感谢您帮助我找出我遇到的错误的根本原因。我尝试使用Instruments(即Allocations-ZombieProfiler)调试错误,但我无法理解所呈现的调用堆栈。这是用户界面的链接方式:TabBarController->NavigationController->TopPlacesTableViewController->RecentPhotosTableViewController->PhotoViewController当我在最后一个View(即PhotoViewController的View)中单击“后退”按钮时发生错误。此操作本应显示之前的R

objective-c - removeObjectAtIndex 导致 "message sent to deallocated instance"

我正在将一些代码转换为ARC。该代码在NSMutableArray中搜索元素,然后查找、删除并返回该元素。问题是元素在“removeObjectAtIndex”后立即被释放:-(UIView*)viewWithTag:(int)tag{UIView*view=nil;for(inti=0;i当我运行它时,我得到了***-[UIViewrespondsToSelector:]:messagesenttodeallocatedinstance0x87882f0在第二条日志语句处。在ARC之前,我小心地在调用removeObjectAtIndex:之前保留对象,然后自动释放它。我如何告诉AR

objective-c - 为什么要释放一个你已经设置为 nil 的属性?

以下是Apple教程中ViewController中的两个方法:-(void)viewDidUnload{self.eventsArray=nil;self.locationManager=nil;self.addButton=nil;}-(void)dealloc{[managedObjectContextrelease];[eventsArrayrelease];[locationManagerrelease];[addButtonrelease];[superdealloc];}dealloc方法不能缩短为以下吗?如果不是,为什么不呢?-(void)dealloc{[manage

ios - 使用 iOS6 之前的 ARC 时是否仍然需要 'dealloc' 和 'viewDidUnload' 方法?

我是一个大型团队的一员,负责处理iOS遗留代码,目标iOS环境为4.3及更高版本。我看到其他开发人员checkin了NSObject的派生类,但没有dealloc方法。我还看到了不包含viewDidUnload方法的UIViewController后代。当我询问此代码时,通常的回答是“别担心,ARC现在会处理这个问题。”我知道viewDidUnload在iOS内存不足的情况下被调用,目的是通过释放可以通过调用viewDidLoad重新创建的对象来释放内存,并且dealloc在对象的保留计数为零时调用。对于UIViewController对象和后代,这可能意味着在dealloc之前可能会

ios - -[不是类型 _cfTypeID] : message sent to deallocated instance

我正在使用代码为图像提供不同的效果,例如对比度、色调、饱和度等;并使用苹果glImageProcessing代码,我从我的View跳转到glimgeProcessing,并将生成的图像保存到appDelegateuiimage属性中文件。从EagleView返回后,我使用viewDidAppear函数将我的ImageView更改为更新的图像"-[NotAType_cfTypeID]:messagesenttodeallocatedinstance"我的代码是NSLog(@"appimafeis%@",app.image);[imageViewsetImage:app.image];我的

objective-c - autorelease 与 dealloc 中的 release

我知道iOS中的内存管理对于像我这样的新手来说很棘手,但我希望在这里能得到关于stackoverflow的清晰解释,这是我在其他任何地方都找不到的。所以,假设我有一个属性/ivar@property(nonatomic,retain)UIPopoverController*popOver;我是这样分配的:self.popOver=[[[UIPopoverControlleralloc]initWithContentViewController:popOverContent]autorelease];现在,在我的dealloc和viewDidUnload方法中,我同时执行这两个操作//i

ios - deleteRowsAtIndexPaths : swipe to delete rows never deallocates the cell?

我想知道我是否以某种方式偶然发现了一个错误,即滑动以删除UITableViewCells不会在它们的UITableViewController执行时解除分配。我在我的自定义表格单元格中添加了一个-dealloc方法,它会输出一条消息。当我在导航Controller上按回键时,所有6条消息都被注销。如果我滑动以删除一个(或多个),然后按返回键,则只会记录5个。所以我把被删除的单元格的指针地址注销了,以备后用。现在,当我返回并随时暂停执行时,我可以进入lldb提示符:po140382950334240;layer=>这应该已经被释放了!单元格的x.position正好是-(tableVie