在我编写的一个过程中,我的应用程序在内存中上升,似乎没有释放它.
我要提到的第一件事是我写的基本概要是:
- 请求一个url(使用NSData -initWithContentsOfURL获取数据)
- 使用NSJSONSerialization + JSONObjectWithStream 将NSData 解析为NSDictionarys的NSArray
- 循环解码NSArray使用FMDB框架在sqlite数据库中插入/更新/删除记录,并对数据进行解码
应用程序执行上述操作,但是它会在一个循环中执行一段不确定的时间,其中应用程序显示"正在加载"HUD.我认为值得一提的是,虽然我发现这个过程有多少次无关紧要,因为如果它正确释放,它不应该影响内存使用量.如果我在这里错了,请告诉我.
我的代码运行良好,嗯,它完成了它的目的.但是,当我分析应用程序代码时,内存似乎只是不断上升.它确实在各个部分都有所下降,但总体而言它不断上升(IE不会完全释放它之前使用的内容).
如前所述,我已使用Allocations,Leaks,VM Tracker和使用的Trace Highlights对应用程序进行了分析.
跟踪要点:显示内存使用量逐渐增加,但丢失了一些内存(并非全部),这意味着如果进程运行的时间足够长,内存将达到高使用率并终止.
分配:似乎没问题.分配有峰值,但总是回到它开始的地方.我拍了快照,他们总是下降,每段最多留下500-700kb(左边大约10分钟)
VM Tracker:证明显示内存持续增加,并且没有释放完整内存(在跟踪突出显示中发现).居民似乎变得非常高
泄漏:应用中未发现泄漏
以下是Allocations/VM Tracker运行的一些截图:

值得注意的是,我实际上尝试过:
- 添加autoreleasepools
- 通过分配每个属性来"强制释放"; 例如NSURL,NSRequests等; 没有
我的问题:
- 我应该做一些特别的事情来释放记忆吗?
- 我怎么能进一步调试这个问题?
- 如何才能最好地找出仪器给我的数据有什么问题?
---- 编辑: ----
这是发送url请求获取数据的代码:
- (void) requestAndParse : (NSString *)url
{
NSURL *theURL;
ASIHTTPRequest *request;
NSData *collectedData;
NSError *error;
@try {
// File cache the NSData
theURL = [[NSURL alloc] initWithString: url];
request = [ASIHTTPRequest requestWithURL: theURL]; …Run Code Online (Sandbox Code Playgroud) 我想要反转a CGPath(相对于Rect).通过这个,我的意思是我已经定义了一个CGPath,我希望得到一个CGPath概述在rect中的所有其他区域.
我一直在尝试不同的方式,现在谷歌搜索几天没有运气.我只是无法解决它!
考虑以下带定义的rect CGPath(其中green是定义的CGPath填充):

现在,我想要的东西(倒置CGPath)将产生以下内容:

具体来说,这是用于SKCropNode和SKPhysicsBodySpriteKit框架中的和,但是我使用CGPaths(并将路径存储在ivar中)为掩码节点生成多边形.
是颠倒了CGPath可能的还是其他方式?如果是这样,怎么样?
提前致谢.