Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone iPad搜索栏内存访问不良?_Iphone_Objective C_Xcode_Ipad_Ios4 - Fatal编程技术网

Iphone iPad搜索栏内存访问不良?

Iphone iPad搜索栏内存访问不良?,iphone,objective-c,xcode,ipad,ios4,Iphone,Objective C,Xcode,Ipad,Ios4,因此,我试图在我的应用程序中实现一个搜索栏,我非常接近,但似乎无法找出内存错误发生的位置。这是我的搜索方法的一部分: filters = [[NSMutableArray alloc] init]; NSString *searchText = detailSearch.text; NSMutableArray *searchArray = [[NSMutableArray alloc] init]; // Normally holds the object (ex: 70 locations

因此,我试图在我的应用程序中实现一个搜索栏,我非常接近,但似乎无法找出内存错误发生的位置。这是我的搜索方法的一部分:

filters = [[NSMutableArray alloc] init];
NSString *searchText = detailSearch.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];

// Normally holds the object (ex: 70 locations)
searchArray = self.copyOfFilters ;

//This is the line that is breaking after ~2-3 letters are entered in the search
for (NSString *sTemp in searchArray)
{
    NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];

    if (titleResultsRange.length > 0)
        [filters addObject:sTemp];
}
displayedFilters = filters;
CopyOffilter是视图首次通过以下方式加载时显示的过滤器的深度副本:

self.copyOfFilters = [[NSMutableArray alloc] initWithArray:displayedFilters copyItems:YES];    

我已经跟踪了字母的输入,在两个字母后是准确的,但是一旦你尝试在搜索栏的空格后输入一个字母,它就会崩溃。CopyOffilter={int[$VAR count]}对象的值。有人知道这可能是什么原因吗?谢谢

您是否在调用displayedFilters时释放了筛选器

NSMutableArray *searchArray = [[NSMutableArray alloc] init];

// Normally holds the object (ex: 70 locations)
searchArray = self.copyOfFilters ;
是一个非常基本的内存泄漏。您创建了一个NSMuatbleArray,并失去了在下一条语句中发布它的机会


请确保不要在代码中的任何位置释放或更改CopyOffilter或searchArray。

我想知道修改self.CopyOffilter时是否有问题。 试一试

不要忘记在循环后释放searchArray。
这可能是一次冒险,但可能值得一试?

解决了它:将上面的代码更改为-NSMutableArray*searchArray=[[NSMutableArray alloc]initWithArray:copyOfFilters copyItems:YES];看来我还需要做内存管理工作谢谢你的帮助!你知道有什么简单的资源可以让我读一下mem管理吗?我还没有一本书可以参考那些东西。谢谢你将不得不登录。这是我初始化搜索阵列的方式。如果过滤器的副本被释放或更改,这不会有任何区别。你在GDB中尝试过po searchArray吗?我解决了这个问题,请看我对你答案的评论
searchArray = [self.copyOfFilters copy] ;