草庐IT

objc_overrelease_during_dealloc_e

全部标签

objective-c - 是否适合在dealloc中删除文件或关闭数据库连接?

我知道当对象的保留计数达到零时会调用dealloc,并且应该在其中释放iVars,但我想知道它是否也是删除临时文件或关闭数据库连接的合适位置。具体来说,我有一个UIViewController的子类,它在-viewDidLoad中创建一个数据库连接,并且通过用户交互,可以创建临时文件。当上述Controller从导航堆栈中弹出时,我想关闭数据库连接并删除临时文件(如果存在)。我应该在dealloc中这样做吗?我的第一个想法是在-viewDidUnload中清理这个数据库和文件,但我现在知道这个方法只有在操作系统发出内存警告时才会调用。另一个想法是将它放在-viewDidDisappea

ios - 取消操作时不调用 NSOperation dealloc

我在我的应用程序中使用NSOperation。创建另一个操作时,我正在取消先前执行的操作。但是之前创建的操作的dealloc方法在取消该操作时没有调用。请建议我。谢谢。 最佳答案 我认为您需要的是isFinished返回YES并且isExecuting在取消后返回NO。否则永远不会释放操作对象。文档说。Inadditiontosimplyexitingwhenanoperationiscancelled,itisalsoimportantthatyoumoveacancelledoperationtotheappropriatefi

objective-c - 苹果错误 - "_OBJC_CLASS_$_TFHpple"

我的应用程序使用Hpple。我包括了TFHpple.h、TFHpple.m、TFHppleElement.h、TFHppleElement.m、XPathQuery.h和XPathQuery.m。还包括${SDKROOT}/usr/include/libxml2和-lxml2。我有这么一小段代码:NSData*data=[[NSDataalloc]initWithContentsOfFile:@"example.html"];TFHpple*xpathParser=[[TFHpplealloc]initWithHTMLData:data];当我尝试运行它时,我收到此错误:"_OBJC_

objective-c - ARC 引用计数 dealloc 和 release

我有点糊涂了。我正在创建一个带有Storyboard的应用程序,并在iPad1上运行它。该应用程序使用大量内存,因此达到120mb,崩溃。根据我的理解,要消除这个问题,你需要释放、dealloc……重点是,对于ARC,这应该是自动的。事实上,如果我添加例如:[label1release];它给了我一个错误。但是这个ARC的自动release和dealloc好像不行啊!这是因为ARC有不同的发布方式吗?? 最佳答案 您不需要使用ARC手动保留/释放/自动释放。但是,如果您有大量未使用对象的事件引用,它们仍将保留在内存中。使用Instr

ios - 为什么在实例化后立即调用dealloc?

在循环内实例化之后调用BaseViewController类的ARC和dealloc有一个小问题,我不知道为什么。我要做的基本上是将所有基本ViewController存储在一个数组中。@interfaceCategoriesContainerViewController()@property(nonatomic,strong)IBOutletUIScrollView*scrollView;@property(nonatomic,strong)NSMutableArray*categoriesViews;@end-(void)viewDidLoad{[superviewDidLoad]

ios - 使用 -ObjC/-all_load 链接器标志时找不到符号

更新到Xcode6后,我在IOS7上遇到此代码崩溃并显示“找不到符号:_OBJC_CLASS_$_UIUserNotificationSettings”,任何人都可以帮助解决它if([applicationrespondsToSelector:@selector(registerUserNotificationSettings:)]){UIUserNotificationSettings*settings=[UIUserNotificationSettingssettingsForTypes:(UIUserNotificationTypeSound|UIUserNotification

ios - -ObjC 上相互矛盾的框架

所以在我的项目中,我有FacebookSDK、ParseSDK和FirebaseSDK。Facebook和parse都需要bolt,所以我实现了它。但是,除非我删除-Objcflags,否则它不会编译。问题是,如果我删除此标记,代码将编译,但在尝试初始化Firebase时会导致运行时错误,因为它需要-ObjC。我一团糟。我可以只为那个特定的框架设置标志吗?感谢您的帮助。 最佳答案 (我认为这应该是一个评论,但我还没有足够的代表,希望这有助于解决这个问题。)我遇到了完全相同的问题(使用SponsorPaySDK而不是FirebaseS

ios - 我如何编写单元测试来检查我的属性是否在 iOS 上的 dealloc 中释放?

我对TDD和单元测试还很陌生,我正在一个副项目中尝试一下。而且我有点陷入对dealloc方法的单元测试。我们都知道释放自定义属性并在dealloc中将它们设置为nil是一个好习惯:-(void)dealloc{[myPropertyrelease];myProperty=nil;[superdealloc];}我如何编写单元测试来检查此行为?显然,这是行不通的:[myObjectrelease]STAssertNil(myObject.myProperty,@"myPropertyshouldbereleasedandsettonilindealloc")有什么建议吗?谢谢!

iphone - ObjC : how to insert component to url from A/B to A/between/B?

我需要操作一些URL,以这种方式向其添加组件:/img/david/PlayBasketball.jpg将变成:/img/HiRes/david/PlayBasketball.jpg在iPhone的ObjectiveC中,我该怎么做?提前致谢! 最佳答案 使用NSString方法pathComponents和pathWithComponents:NSString*p=@"/img/david/PlayBasketball.jpg";NSMutableArray*cmps=[NSMutableArrayarrayWitharray:[

ios - objc_msgSend() 传递了 "a pointer to the reciever' s 数据是什么意思”?

在Apple的ObjC运行时指南中,它描述了objc_msgSend()函数对动态调度的作用:Itfirstfindstheprocedure(methodimplementation)thattheselectorrefersto.Sincethesamemethodcanbeimplementeddifferentlybyseparateclasses,thepreciseprocedurethatitfindsdependsontheclassofthereceiver.Itthencallstheprocedure,passingitthereceivingobject(apo