NSMutableDictionary中的对象在运行时丢失。指针以某种方式丢失了

时间:2011-09-21 22:30:16

标签: iphone xcode pointers nsmutablearray retain

我在类

中有一个NSMutableDictionary
@interface ClassName : UITableViewController {
        NSMutableArray *doctors_set;
}

@property (nonatomic, retain)   NSMutableArray *doctors_set;

@implementation ClassName
@synthesize DocID,doctors_set;

我正在添加4个对象

DoctorsSet *set = [[DoctorsSet alloc] init];

//DoctorsSet is an extended NSObject

[doctors_set addObject:set];

我想要的是在同一个类中使用这些集合(我正在使用tableview) 所以当我点击单元格时,我必须恢复索引上的集合

DoctorsSet *set = (DoctorsSet *)[doctors_set objectAtIndex:indexPath.row];

当didSelectRowAtIndexPath事件发生时...索引处的集合丢失,我可以在调试器中看到它。索引甚至没有DoctorsSet类型..它们被一些随机类型替换,告诉我某些对象不会被保留...     如果我在表格单元格上点击2,3次

,就会发生这种情况

当我在调试器中分配数组时,我得到了

self 
  doctors_set = (_NSARRAYM *) pointerid 4 objects
    0 = (DoctorsSet *) pointerid
    1 = (DoctorsSet *) pointerid
    2 = (DoctorsSet *) pointerid
    3 = (DoctorsSet *) pointerid

当我收到错误时,因为它表明选择器不属于对象(那是因为对象本身丢失了)

self 
  doctors_set = (_NSARRAYM *) pointerid 4 objects
    0 = (NSObject *) pointerid
    1 = (NSObject *) pointerid
    2 = (NSCFString *) pointerid
    3 = (UITouchData *) pointerid

1 个答案:

答案 0 :(得分:0)

您在哪里分配NSMutableArray并将其分配给doctors_set属性?我的猜测是你分配它而不保留它。

你可能想做类似的事情:

doctors_set = [[NSMutableArray alloc] init];

如果您展示如何分配和存储此属性,则应该更容易说明如何修复它。