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] ;