小编Jos*_*hua的帖子

iOS [ARC]应用程序不释放内存

在我编写的一个过程中,我的应用程序在内存中上升,似乎没有释放它.

我要提到的第一件事是我写的基本概要是:
- 请求一个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)

memory cocoa-touch ios

10
推荐指数
1
解决办法
1612
查看次数

在Rect中反向CGPath

我想要反转a CGPath(相对于Rect).通过这个,我的意思是我已经定义了一个CGPath,我希望得到一个CGPath概述在rect中的所有其他区域.

我一直在尝试不同的方式,现在谷歌搜索几天没有运气.我只是无法解决它!

考虑以下带定义的rect CGPath(其中green是定义的CGPath填充):

在此输入图像描述

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

在此输入图像描述

具体来说,这是用于SKCropNode和SKPhysicsBodySpriteKit框架中的和,但是我使用CGPaths(并将路径存储在ivar中)为掩码节点生成多边形.

是颠倒了CGPath可能的还是其他方式?如果是这样,怎么样?

提前致谢.

cgpath ios sprite-kit

6
推荐指数
1
解决办法
1984
查看次数

标签 统计

ios ×2

cgpath ×1

cocoa-touch ×1

memory ×1

sprite-kit ×1