Objective c iOS内存问题

Objective c iOS内存问题,objective-c,cocoa-touch,memory-management,Objective C,Cocoa Touch,Memory Management,我是ARC编程新手,一直在查找iOS中的内存崩溃以及ARC如何适应。我明白了这一点,但我收到了大量的“已接收内存警告”崩溃 然后我看到一篇关于@autoreleasepool使用的帖子,所以我放了一篇: @autoreleasepool { for (i = 0; i < [results count]; i++) { // create new object CustomAnnotation myAnn = [[Custom

我是ARC编程新手,一直在查找iOS中的内存崩溃以及ARC如何适应。我明白了这一点,但我收到了大量的“已接收内存警告”崩溃

然后我看到一篇关于@autoreleasepool使用的帖子,所以我放了一篇:

@autoreleasepool {
        for (i = 0; i < [results count]; i++) {
            // create new object CustomAnnotation
            myAnn = [[CustomAnnotation alloc] init];
            // set the lat and long of the object
            location.latitude = (double)[[[results objectAtIndex:i] objectForKey:@"lat"] doubleValue];
            location.longitude = (double)[[[results objectAtIndex:i] objectForKey:@"long"] doubleValue];
            // set properties of the object
            myAnn.coordinate = location;
            myAnn.title = [[results objectAtIndex:i] objectForKey:@"title"];
            myAnn.subtitle = [[results objectAtIndex:i] objectForKey:@"strap"];
            myAnn.pinId = [[results objectAtIndex:i] objectForKey:@"id"];
            myAnn.url = [[results objectAtIndex:i] objectForKey:@"link"];
            myAnn.dateTime = [[results objectAtIndex:i] objectForKey:@"timestamp"];

        // add the object to the array locations
        [locations addObject:myAnn];
        }
    } // end autoreleasepool
@autoreleasepool{
对于(i=0;i<[结果计数];i++){
//创建新对象自定义注释
myAnn=[[CustomAnnotation alloc]init];
//设置对象的纵横比
location.latitude=(double)[[results objectAtIndex:i]objectForKey:@“lat”]doubleValue];
location.longitude=(double)[[results objectAtIndex:i]objectForKey:@“long”]doubleValue];
//设置对象的属性
myAnn.坐标=位置;
myAnn.title=[[results objectAtIndex:i]objectForKey:@“title”];
myAnn.subtitle=[[results objectAtIndex:i]objectForKey:@“strap”];
myAnn.pinId=[[results objectAtIndex:i]objectForKey:@“id”];
myAnn.url=[[results objectAtIndex:i]objectForKey:@“link”];
myAnn.dateTime=[[results objectAtIndex:i]objectForKey:@“timestamp”];
//将对象添加到阵列位置
[对象:myAnn];
}
}//结束自动释放池
我想这是相当沉重的记忆。我看了一下记忆追踪器的东西,记忆水平似乎在不断地上升,而没有下降。在我的.h中有什么是保持记忆的共同原因吗

#import <Social/Social.h>
#import <Accounts/Accounts.h>
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
#import "FilterViewController.h"

@class FilterViewController;

@interface FirstViewController : UIViewController
{
    NSArray *results;
    UIActivityIndicatorView *spinner;
    NSMutableData *data;
    UILabel *sliderValue;
    NSString *whatDay;
    NSString *whatTime;
    NSDate *passedData;
    NSString *datePicker;
    SLComposeViewController *mySLComposerSheet;
}

@property (strong) FilterViewController *filterViewController;
@property (weak, nonatomic) IBOutlet MKMapView *mapView;

@property(strong, nonatomic) NSString *datePicker;

@property(nonatomic, retain) NSDate *passedData;

@property int selectedTime;

- (IBAction)designworks:(id)sender;
- (IBAction)searchOptions:(id)sender;
- (IBAction)refreshMap:(id)sender;
- (IBAction)twitterButton:(id)sender;
- (IBAction)postFacebook:(id)sender;

@end
#导入
#进口
#进口
#进口
#进口
#导入“FilterViewController.h”
@类FilterViewController;
@界面FirstViewController:UIViewController
{
NSArray*结果;
UIActivityIndicatorView*微调器;
NSMutableData*数据;
UILabel*sliderValue;
NSString*whatDay;
NSString*什么时间;
NSDate*passedData;
NSString*日期选择器;
SLComposeViewController*mySLComposerSheet;
}
@属性(强)FilterViewController*FilterViewController;
@属性(弱,非原子)IBMMapView*mapView;
@属性(强,非原子)NSString*日期选择器;
@属性(非原子,保留)NSDate*passedData;
@属性int selectedTime;
-(iAction)设计作品:(id)发送者;
-(iAction)搜索选项:(id)发件人;
-(iAction)refreshMap:(id)发送方;
-(iAction)推特按钮:(id)发送者;
-(iAction)postFacebook:(id)发件人;
@结束
对于这样一个可测试的问题,我很抱歉,我正在学习,只是在内存管理方面相当慢

编辑:内存配置文件:


在您的情况下,@autoreleasepool语句对您没有任何帮助,因为循环中没有自动释放的对象。尝试Xcode->Product->Analyze以查找编译器明显的漏洞。如果这没有帮助,您应该查看对象分配器。也许你知道不应该存在的生物越来越多了。@JonathanCichon谢谢你的回答,在“分析”中,没有出现任何关于内存问题的问题,所以我试着分析它,得到了这样的结论:你发布的屏幕截图并没有真正为你的问题提供任何帮助。(初始)不断增长的内存消耗是完全正常的。“接收到的内存警告”可能是由错误代码引起的,但也可能是由概念引起的。例如,您可能希望一次获取和存储数百万个位置,这并不意味着您的代码有错误,但设备在执行任务时内存不足。您应该检查即使您删除了对象,内存消耗是否仍然很高,例如来回导航。@JonathanCichon Ah i see:/听起来比我当时想象的要复杂,如果您查看此链接,长的直线会沿着选项卡栏反复导航,然后,当我单击打开新ViewController的按钮时,会出现一个尖峰,当它返回到主ViewController时,尖峰会降低。奇怪的是,这并没有使“对象摘要”崩溃。按“活动字节”排序应该可以为您提供有关消耗内存最多的对象类型的线索。在来回导航期间,“活动字节”不应显著增加。在每次“收到内存警告”之后,至少您的“活动字节”应该下降到一个普通的低级别,因为在此事件中,系统应该清除所有缓存的图像/数据。