Tag: 自动参考计数

如何保持内存中的variables,直到应用程序退出

我在iOS中有一个单例对象,在实例化时parsing一个CSV文件,然后保存结果。 我想使这个对象普遍可访问,我希望它不会从内存中释放,直到应用程序退出。 我正在运行ARC,所以我不能手动保留。 有没有办法可以做到这一点,所以它会与ARC工作? 头文件: #import <Foundation/Foundation.h> #import "CHCSV.h" #import "RCParserObject.h" @interface ParserStore : NSObject <CHCSVParserDelegate> { // CSV Variables RCParserObject *item; NSMutableArray *data; NSMutableArray *parsedData; int fields; bool open; } @property (atomic, retain) RCParserObject *item; @property (atomic, retain) NSMutableArray *data; @property (atomic, retain) NSMutableArray *parsedData; @property (atomic) int fields; @property (atomic) bool open; + […]

iOS5 ARC可以安排从后台select器安排NSTimers吗?

我正在尝试debugging我的应用程序。 我在我的非弧代码中使用了一些NSTimer实例(从主线程): [NSTimer scheduledTimerWithTimeInterval:5 target:musicPlayer selector:@selector(playPause:) userInfo:nil repeats:NO]; 这工作正常,如果我将此代码分配给一个button,然后单击一个button。 定时器启动。 我也试过: if( self.deliveryTimer == nil) { self.deliveryTimer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(playPause:) userInfo:nil repeats:NO]; } -(void)playPause:(NSTimer*)timer { [deliveryTimer invalidate]; deliveryTimer = nil; //more code here } 我期望定时器执行,按下面的播放/暂停方法,然后转为零,所以我可以稍后重置计时器。 我检查nil的原因是因为我有3个不同的代码path,可能会设置计时器。 每个人都有一个NSLog语句指出计时器已经被调度。 我的代码运行,我看到计时器正在计划,但他们似乎并没有在正常的应用程序执行过程中触发。 我正在调查为什么。 短期定时器,使用相同的逻辑火罚款。 当我让应用程序运行一段时间,我遇到了问题。 NSTimers可以被ARC收回吗? 如果我从performSelectorInBackground设置计时器,这有什么关系吗? 当我写这个问题的时候,我注意到我的一些定时器是通过被调用的代码path创build的: [self performSelectorInBackground:@selector(notifyDelegateOfDataPoint:) withObject:data]; 背景select器是否可以成为我的计时器之前不会触发/恢复的原因? 任何帮助表示赞赏,这个bug已经扰乱了我超过2周! 更新: 在更改代码以使用 NSTimers 的主线程后, […]

如何确保在IOS 5中使用ARC来破坏单身人士?

比方说,我想创build一个里面有一些数据的单例。 数据只能dynamic分配一次,就像在单例中所期望的那样。 但是我现在想知道这个数据何时以及如何被释放。 我应该build立摧毁单身人士的特殊方法吗? 更具体的说 – 这个单例的“dealloc”方法会被执行吗? 谁负责?

ARC:将编译器标志设置为-fno-objc-arc并生成错误

在关于为特定类禁用ARC编译器机制的stackoverflow主题之后,我在Compile Sources部分的Compiler Flags列(TARGETS项目中的Buil Phases选项卡)中添加了-fno-objc-arc参数。 即使设置已经被validation,我也无法构build我的应用程序,因为编译器说在ARC下不能使用retain, release, etc. 。 我如何解决上述问题? 先谢谢你。