草庐IT

objc_overrelease_during_dealloc_e

全部标签

ios - iOS 设备上 ObjC 对象的安全释放

对象被释放时会发生什么?是所有的内存都被抹去,还是痕迹还在?如果我理解正确,应用程序的内存会在退出事件状态时保存到闪存中。假设一个足智多谋的黑客能够读出这个内存。如果内存没有被某些东西覆盖,理论上他有时是否能够读出释放的NSString的内容? 最佳答案 不要将安全数据存储在ObjectiveC数据类型中。它们是不透明的数据类型,每次您尝试清除某些部分时,都可能会在内存中制作和/或留下大量数据副本。补充:Swift数据类型似乎也是如此,包括结构、数组和字符串。它们是不透明的,因此谁知道DRAM中可能会留下多少数据副本。使用非不透明的

objective-c - 这些符号 (-fno-objc-arc) 是什么意思?

我在我的项目中混淆了一些代码,既应用了ARC的编码风格,又有些不是。然后我遇到了一个设置一些符号或标志的解决方案:-fno-objc-arc我的问题是,这些标志是什么?这些符号是什么意思-fno-objc-arc?还有这些吗? 最佳答案 -fno-objc-arc标志用于编译器,不适用于链接器。它告诉编译器您的ObjectiveC代码将手动执行所有释放和保留。这是必要的,因为新添加的ARC模式prohibitsexplicituseofretain,release,autorelease,dealloc,andsoon;您甚至无法通

iphone - 我应该在 viewDidUnload 和 dealloc 中注销 NSNotification 吗?

我在viewDidLoad方法中注册了一个NSNotification。我是否应该使用下面的代码在viewDidUnload和dealloc方法中注销它?[[NSNotificationCenterdefaultCenter]removeObserver:self];谢谢。 最佳答案 是的,你应该。释放ViewController时不会调用viewDidUnload。因为viewDidLoad在ViewController打开时被调用,人们有时会错误地认为它的对立面(viewDidUnload)在屏幕关闭时被调用。事实并非如此,vi

ios - 单点触控中 UILabel 中的文本下划线(移植 ObjC 代码)

我想在UILabel中的文本下划线。我找到了以下ObjC代码:NSDictionary*underlineAttribute=@{NSUnderlineStyleAttributeName:@1}myLabel.attributedText=[[NSAttributedStringalloc]initWithString:@"Teststring"attributes:underlineAttribute];我正在尝试将其移植到C#,但无法正常工作。我正在尝试以下操作:varkeys=newobject[]{"NSUnderlineStyleAttributeName"};varobj

iOS:将 ObjC 代码转换为 C#,如何知道应用程序处于空闲状态的时间

我是iOS开发的新手,我正在使用monotouch开发iOS应用程序,我想知道自应用程序闲置以来的时间,我获得了ObjC代码,但无法将其转换为C#。这是代码:-(void)sendEvent:(UIEvent*)event{[supersendEvent:event];//OnlywanttoresetthetimeronaBegantouchoranEndedtouch,toreducethenumberoftimerresets.NSSet*allTouches=[eventallTouches];if([allTouchescount]>0){//allTouchescounto

ios - ObjC : +[NSObject isSubclassOfClass:] gives incorrect failure

我有一个iOS静态库,它定义了一个NSOperation基类,客户端应该将其子类化以将他们自己的逻辑添加到:@interfaceBaseClass:NSOperation/p>客户端向管理器注册它们的子类:-[OperationManagerClassregisterClass:forType:]在管理器中,我想强制要求您必须注册BaseClass的子类,而不仅仅是NSOperation好吧,似乎断言+isSubclassOfClass:应该可以完成工作。但是……事实并非如此。@implementationOperationManagerClass-(void)registerClas

objective-c - 我应该在 dealloc 中释放实例变量和属性吗?

根据Apple关于ViewControllerLifecycle的文档我注意到有关dealloc方法的以下内容:Overridethismethodonlytoperformanylast-minutecleanupofyourviewcontrollerclass.Objectsstoredininstancevariablesandpropertiesareautomaticallyreleased;youdonotneedtoreleasethemexplicitly.我一直被教导要在ViewController的dealloc方法中调用我拥有的实例变量和属性的释放。我知道的唯一

iOS/Objective-C - struct objc_class * 和 struct objc_object *

我的理解是,Objective-C中的对象和类只是结构。分别是:structobjc_class*和:structobjc_object*问题#1:objc_msgSend(idself,SEL_cmd);id据我所知是structobjc_object*类型但是当我们调用一个类的方法,一个类型为structobjc_class*的类,我希望它会引起问题或发出某种警告,例如“嘿,我的friend,这里输入错误”。但是没有。为什么?这只是为了满足我的好奇心,因为即使没有完全理解这一点,它似乎也没有给我带来任何麻烦(到目前为止)。但我想深入挖掘并学习基础知识/“特性”。问题#2:由于根据我

ios - 隐式转换 'BOOL' (又名 'signed char' ) 到 'id' ,objc_setAssociatedObject

我正在使用关联引用作为我类别属性的存储头文件包含:@interfaceUIImageView(Spinning)@property(nonatomic,assign)BOOLanimating;@end实现是-(void)setAnimating:(BOOL)value{objc_setAssociatedObject(self,animatingKey,value,OBJC_ASSOCIATION_RETAIN_NONATOMIC);}但是,我收到上面一行的警告Implicitconversionof'BOOL'(aka'signedchar')to'id'isdisallowedw

iphone - viewDidUnload 应该调用 super viewDidUnload 还是 dealloc?

模板似乎创建了[superviewDidUnload]但代码示例显示:[superdealloc]有区别吗? 最佳答案 您应该只调用父类(superclass)的-viewDidUnload实现切勿直接调用[superdealloc],除非在您自己的-dealloc方法中-(void)viewDidUnload{...[superviewDidUnload];}和-(void)dealloc{//cleanuphere[superdealloc];} 关于iphone-viewDidUn