jjzjj

ios - 调试消失按钮

我在导航项中嵌入了一个UIBarButtonItem。它使用Storyboard定位,并在运行时的某个时刻消失。我发现它正在被释放。例如,我可以开始浏览我的代码,也许搜索“myButton=nil”,看看是否有什么东西故意将它置为空。然后我决定找出是否有一种高级调试技术可用于此类情况。我可以使用的一种方法是将UIBarButtonItem子类化并在dealloc中放置一个断点,以查看堆栈跟踪是否会提供任何有用的信息来说明谁在取消我的按钮。有谁知道任何很酷的LLDB功能、键值观察技术或我可以为这类事情设置的一些符号断点?应用程序不会崩溃,按钮只会在运行时的可预测点消失。附言这可能很简单,

ios - Dealloc 方法从 XCode 4.1 UIViewController 模板中消失

在开始开发iOS应用程序时,我一直在使用XCode3.2.4,但现在我转向使用带有iOS4.3SDK的XCode4.1。我注意到,当我从XCode模板创建UIViewController类时,现在不会自动添加dealloc方法,就像在XCode3中一样。通过Internet搜索让我知道,如果我使用ARC(自动引用计数)创建项目,则可能会发生这种情况,但据我所知,此功能仅在XCode4.2中实现。我应该手动添加dealloc方法吗? 最佳答案 您可以继续添加dealloc。如果确实启用了ARC,您会收到编译器的投诉。即使在使用ARC时

ios - 如何在 objective-c/Xcode 中找到阻止 dealloc 的无用引用?

我在iOS应用程序中遇到问题,一段时间后,对象没有按应有的方式释放。我怀疑这是因为仍然有对它的引用。我正在使用ARC。我想找出该引用的创建位置。然后,我将能够判断它应该在哪里被置为NULL,或者它是否应该成为一个弱引用。我认为可能的解决方案:如果我可以为每个修改引用计数(即保留计数)的地方设置一个断点,那么我将很快找到问题所在。我只是不知道如何设置这样的断点。也许在ARC之前的时代,这可以通过在retain和release中设置断点来完成,但我不知道如何使用ARC做到这一点。高度简化的示例代码:我在我的一门课上做过这个,我知道在哪里://ShouldBeDeallocated.m-(v

ios - NSError 版本 : message sent to deallocated instance

我在iOS7应用程序上遇到崩溃并出现以下错误:-[NSErrorrelease]:messagesenttodeallocatedinstance0x3c443fe0当我添加对以下方法的调用时引发错误:-(void)loadMessages:(NSString*)customerUID{NSString*formatUID=[NSStringstringWithFormat:@"%s%@%s","'",customerUID,"'"];formatUID=[formatUIDstringByReplacingOccurrencesOfString:@"'"withString:@"%2

ios - 转换为 ARC 后出现 "deallocated while key value observers were still registered with it."错误

我正在使用这个类:https://github.com/alexleutgoeb/ALPickerView自从我转换为ARC后,我在点击pickerview几次后收到此错误:2011-10-1814:10:19.424MappingApp[3398:10d03]Aninstance0x73c7cd0ofclassCustomTapGestureRecognizerwasdeallocatedwhilekeyvalueobserverswerestillregisteredwithit.Observationinfowasleaked,andmayevenbecomemistakenly

objective-c - 是否有必要在 Objective-C 类中添加 dealloc 方法?

如果创建了UIviewController子类,则会自动为您创建“dealloc”方法。-(void)dealloc{}但是,当我创建一个Objective-C类时,该方法不会自动创建。是不是需要加dealloc方法,才能释放类中的属性?特别是如果我在头文件中保留了它们?例如在我的Objective-C类头文件中有@interfaceClassA:NSObject{NSString*someProperty;UINavigationController*navcon;}@property(nonatomic,retain)NSString*someProperty;@property(

objective-c - 我可以在 -dealloc 中调用 [self retain] 吗?或者,如何确保 dealloc 发生在主线程上?

这是我的情况。这很复杂,所以请耐心等待。我有一个View类,我们称它为MyView。它创建一个加载指示器subview,然后启动将加载数据的后台操作。它还创建了一个block,后台队列操作完成后将在主队列中排队。该block通过添加另一个subview(UITextView)和已加载的数据来准备View。当然,要做到这一点,block必须具有对View的引用。所以后台操作保留了block,block保留了view。到目前为止和我在一起吗?有时MyView的实例会在后台队列操作完成之前从其superView中删除。有时调用block的主队列操作在后台队列操作被完全清理之前被完全清理。在这

objective-c - 对象保持到应用程序结束 : No Dealloc is okay?

我不会在dealloc中清理存在应用程序生命周期的单例对象。有什么理由我应该这样做吗?-(void)dealloc{//neverdeallocs[superdealloc];}我假设iOS已将我隔离开来,以便在我的应用程序结束时清理所有内存。是吗? 最佳答案 是的,当您的应用终止时,您应用的虚拟内存地址空间将被完全删除/释放。如果你愿意,你可以填写-dealloc,但它永远不会被调用,所以这样做的唯一好处是,如果你决定让你的对象在轨道上成为非单例,你那里已经有了dealloc方法。要记住的一件事是,任何具有可能达到较大大小的缓存的

objective-c - 在dealloc中应该将什么样的属性设置为nil?

我正在使用ARC。ARC会自动释放dealloc中的所有属性吗?是否需要手动将所有公共(public)属性和私有(private)字段设置为nil?有什么好的模式可以遵循吗? 最佳答案 在ARC下,模式是……不要在dealloc中做任何事情,甚至不要实现它。ARC会为您处理属性和实例变量。唯一的异常(exception)是dealloc是取消注册通知的好地方,如果您的对象已经注册了任何通知。 关于objective-c-在dealloc中应该将什么样的属性设置为nil?,我们在Stack

ios - 减少弹出 VC 时释放 100 万个以上对象的时间

我们当前的iOS应用程序必须从服务器下载超过一百万个对象,并且出于某些目的我们将其保存在一个数组中。当用户完成此功能并且应用程序需要一段时间(约15秒)返回到上一个屏幕时,这是因为正在释放100万个对象。我们可以从Instruments中看到,在此期间(15秒),计数从100万变为0。有什么方法可以加快数组中这100万个对象的释放速度吗? 最佳答案 与其尝试更快地释放这些对象,我建议您更慢释放它们。将所有这些元素放在别处。创建一些单例[ObjectsManagersharedInstance],它将负责下载所有这些对象并将其保存在一