标签: nsmutablearray

NSMutableArray传递参数内存泄漏

我在这里遇到一个难题,不管感谢,我的意思是任何帮助=)

我是一名经验丰富的开发人员,我是Objective-C/iPhone/Cocoa的新手.

我想创建一个类控制器,我可以将NSMutableArray作为参数传递.

然后,我们有:

selTimeIntController = [[SingleSelectPickerViewController alloc] initWithSettings: listOfIntervals :kAlarmIntervalStr :myDataHolder.alarmInterval];
[self.navigationController pushViewController: selTimeIntController animated: YES];
[selTimeIntController release];
Run Code Online (Sandbox Code Playgroud)

这个listOfIntervals是一个已经是alloc/init的NSMutableArray*.

在我的SingleSelectPickerViewController上,我们有:

-(id)initWithSettings:(NSMutableArray*)sourceArray :(NSString*)viewCurrentValue :(NSString*)viewTitle {

    if(self = [self initWithNibName: kNibName bundle: [NSBundle mainBundle]]) {

            listOfIntervals = [NSMutableArray arrayWithArray: (NSMutableArray*)sourceArray];
            currentValue    = [[NSString alloc] initWithString: viewCurrentValue];
            title           = [[NSString alloc] initWithString: viewTitle];
    }

    return self;
}
Run Code Online (Sandbox Code Playgroud)

通过调试,我能够在SingleSelectPickerViewController上看到我的listOfIntervals.

这里我们有SingleSelectPickerViewController'dealloc:

- (void)dealloc {
    [super dealloc];

    [listOfIntervals release];
    [currentValue    release];
    [title           release];
}
Run Code Online (Sandbox Code Playgroud)

但是,每次我实例化我的SingleSelectViewController时,我都会收到一个带有以下堆栈的EXEC_BAD_ADDRESS:

#0  0x96132688 in objc_msgSend ()
#1  0x00003ee2 in -[SingleSelectPickerViewController tableView:numberOfRowsInSection:] …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch memory-leaks objective-c nsmutablearray

2
推荐指数
1
解决办法
3636
查看次数

从NSMutableArray中删除对象

我有一个NSMutableArray,它包含我系统上的所有日历(作为CalCalendar对象):

NSMutableArray *calendars = [[CalCalendarStore defaultCalendarStore] calendars];

我想从标题不包含字符串的calendars任何CalCalendar对象中删除@"work".

我试过这个:

for (CalCalendar *cal in calendars) {
    // Look to see if this calendar's title contains "work". If not - remove it
    if ([[cal title] rangeOfString:@"work"].location == NSNotFound) {
        [calendars removeObject:cal];
    }
}
Run Code Online (Sandbox Code Playgroud)

控制台抱怨说:

*** Collection <NSCFArray: 0x11660ccb0> was mutated while being enumerated.

事情变坏了.显然你似乎不能做我想做的事情所以有人能建议最好的方法吗?

谢谢,

xcode cocoa calendar objective-c nsmutablearray

2
推荐指数
1
解决办法
8930
查看次数

搜索NSMutableArray时NSCFString countByEnumeratingWithState:objects:count:ERROR

我有以下情况,我NSMutableArray填写了一个xml我想搜索的文件.当我在搜索字段中输入内容时出现此错误:

-[NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x5b388b0
Run Code Online (Sandbox Code Playgroud)

它意味着什么,我该如何解决?

我想错误就在这附近.

- (void)searchTableView{

 searchedList = [[NSMutableArray alloc] init];
 NSLog(@"new list %@", searchedList);
 NSString *searchText = searchBar.text;
 NSMutableArray *searchArray = [[NSMutableArray alloc] init];

 for (NSDictionary *dictionary in list) {
    NSArray *array = [dictionary objectForKey:@"TITLE"];
   [searchArray addObjectsFromArray:array];
 }

 for (NSString *TempArray in searchArray) {
  NSRange titleResults = [TempArray rangeOfString:searchText options:NSCaseInsensitiveSearch];
  if (titleResults.length > 0) 
  [searchedList addObject:TempArray];
 }
 [searchArray release];
 searchArray = nil;
}
Run Code Online (Sandbox Code Playgroud)

iphone search objective-c nsmutablearray

2
推荐指数
1
解决办法
2万
查看次数

将项添加到NSMutableArray并保存/加载

我已经使用本教程创建了一个带有使用NSMutableArray填充的表视图的应用程序.现在我想添加功能,以便向阵列添加其他项目并保存/加载它们.我已经将Fruit类定制为如下所示:

#import <UIKit/UIKit.h>

@interface Fruit : NSObject {
NSString *name;
NSString *instructions;
NSString *explination;
NSString *imagePath;
}

@property(nonatomic,copy) NSString *name;
@property(nonatomic,copy) NSString *instructions;
@property(nonatomic,copy) NSString *explination;
@property(nonatomic,copy) NSString *imagePath;

- (id)initWithName:(NSString*)n instructions:(NSString *)inst explination:(NSString *)why imagePath:(NSString *)img;

@end
Run Code Online (Sandbox Code Playgroud)

和Fruit.m文件:

#import "Fruit.h"

@implementation Fruit
@synthesize name,instructions,explination,imagePath;

- (id)initWithName: (NSString*)n instructions:(NSString*)inst explination:(NSString *)why imagePath:(NSString *)img {
    self.name = n;
    self.instructions = inst;
    self.explination = why;
    self.imagePath = img;
    return self;
}
@end
Run Code Online (Sandbox Code Playgroud)

这很好用,我可以加载两个textview和一个imageView,而不只是一个textview.但是,我将如何保存用户创建的任何新项目,并在应用程序再次启动时加载它们(如果存在)?

iphone load save uitableview nsmutablearray

2
推荐指数
1
解决办法
1431
查看次数

objective c何时使用NSDictionary而不是NSArray

关于我应该使用哪两个,我处于两难境地.我将通过一个宁静的API检索一组数据(返回json),我不知道在我在UI视图表上显示它之前应该如何存储它们.

例如.

{"Events":[{"Id":5,"Name":"Event 1 2013"},{"Id":6,"Name":"Event 2 2013"}]}
Run Code Online (Sandbox Code Playgroud)

我一直在阅读教程,有些人会使用NSMutableArrays而有些人会使用NSMutableDictionary.

我该怎么办呢?

顺便说一句:我在UI视图表上显示数据,在点击时会将用户重定向到另一个页面,如果他们决定返回则必须显示上一个视图而不重新加载(使用UinavigationController)

谢谢!

编辑:

另外,只是为了让您了解我正在尝试做什么.我正在尝试按照本教程将我分成的数据拆分为节标题.在本教程中,它使用的是NSDictionary.

http://www.icodeblog.com/2010/12/10/implementing-uitableview-sections-from-an-nsarray-of-nsdictionary-objects/

如果我使用NSArray,会影响性能吗?

xcode objective-c nsmutablearray nsmutabledictionary ios

2
推荐指数
1
解决办法
7314
查看次数

NSMutableArray removeAllObjects导致崩溃

我有一个NSMutableArray在ViewController我的UITableView定义的数据源,如下所示:

NSMutableArray *messageArray;
Run Code Online (Sandbox Code Playgroud)

我有一个方法来重新加载tableView数据,在此之前,我想清除现有的表数据.

如果我使用以下代码:

  [messageArray removeAllObjects];    
  [self.tableView reloadData];
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

2013-02-12 14:20:30.378 appname [20998:907] *由于未捕获异常'NSInternalInconsistencyException'而终止应用程序,原因:' - [__ NSCFArray removeObjectAtIndex:]:发送到immutable对象的mutating方法'* First throw call stack: (0x3939e3e7 0x35dd6963 0x3939e307 0x393200e7 0x392eb5e5 0x7cda3 0x3a236047 0x3a2360d1 0x3a236047 0x3a235ffb 0x3a235fd5 0x3a23588b 0x3a235d79 0x3a15e5c9 0x3a14b8b1 0x3a14b1bf 0x336305f7 0x33630227 0x393733e7 0x3937338b 0x3937220f 0x392e523d 0x392e50c9 0x3362f33b 0x3a19f291 0x79c11 0x39be4b20)的libc ++ abi.dylib:终止称为抛出异常

但是,如果我使用以下代码,它的工作原理.

  NSMutableArray *emptyArray = [NSMutableArray new];
  messageArray = emptyArray;    
  [self.tableView reloadData];
Run Code Online (Sandbox Code Playgroud)

为什么我收到错误removeAllObjects?这可能是罪魁祸首吗?

    NSMutableDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:nil];
    messageArray …
Run Code Online (Sandbox Code Playgroud)

exception nsmutablearray ios ios6

2
推荐指数
1
解决办法
2270
查看次数

检查View控制器类是否存在于视图控制器数组中

我正在尝试检查视图控制器列表self.navigationController.viewControllers.

NSMutableArray *arrayOfControllers = [[NSMutableArray alloc] initWithObjects:self.navigationController.viewControllers, nil];
Run Code Online (Sandbox Code Playgroud)

作为示例,这将返回如下数组:

array -- (
        (
        "<HomeViewController: 0xb1aca10>",
        "<LeftMenuViewController: 0xe751520>"
    )
)
Run Code Online (Sandbox Code Playgroud)

我现在需要检查数组中是否存在HomeViewController我该怎么做?

我试过这样做,[arrayOfControllers containsObject:[MESHomeViewController class]])但这并不是真的.

uiviewcontroller nsmutablearray uinavigationcontroller nsarray ios

2
推荐指数
1
解决办法
4506
查看次数

检测NSMutable Array中包含的重复自定义对象

我读过的每一个类似的问题,但已经确定无论我在做一些愚蠢的事(可能),或者我不掌握NSArray方法containsObject:

我正在尝试设置UITableView包含已保存的"收藏夹"的内容; 保存为名为"MapAnnotations"的自定义类的位置.这包含坐标,标题,信息字段和其他一些参数.我成功地从一个NSUserDefaults实例保存/检索它,但似乎无法成功检测到我的重复对象NSMutableArray.

这是相关的代码:

-(void)doSetUp
{
//load up saved locations, if it exists

NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];

//if there are saved locations
if ([myDefaults objectForKey:@"savedLocations"]) {

    NSLog(@"file exists!");

      //get saved data and put in a temporary array
    NSData *theData = [myDefaults dataForKey:@"savedLocations"];
      //my custom object uses NSCode protocol
    NSArray *temp = (NSArray *)[NSKeyedUnarchiver unarchiveObjectWithData:theData];
    NSLog(@"temp contains:%@",temp);
      //_myFavs currently exists as a NSMutableArray property
    _myFavs = [temp …
Run Code Online (Sandbox Code Playgroud)

objective-c nsmutablearray ios

2
推荐指数
1
解决办法
447
查看次数

2
推荐指数
1
解决办法
67
查看次数

如何在NSMutableArray中检查所有对象的相同值

我NSMutableArray喜欢这样:

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"0",@"0",@"0",@"0",@"0", nil];
Run Code Online (Sandbox Code Playgroud)

现在我想检查我的数组中的所有对象是否相同,等于0做某些工作!!! 但我不知道这个.请指导我.

nsmutablearray nsarray

2
推荐指数
1
解决办法
874
查看次数