我在UIDatePicker上遇到了非常奇怪的行为.我有一个视图,在.h文件中声明的日期选择器为IBOutlet UIDatePicker*datePicker; 具有非原子性和保留性.datePicker在IB文件中正确链接.
在代码中我设置了使用以下代码调用UICOntrolEventValueChanged的最小值,最大值,初始日期和操作
If (!currentDate) {
initialDate = [NSDate date];
} else {
initialDate = currentdate;
}
[datePicker setMinimumDate:[NSDate date]];
[datePicker setMaximumDate:[[NSDate date] addTimeInterval:5 * 365.25 * 24 * 60 * 60]]; // to get upto 5 years
[datePicker setDate:initialDate animated:YES];
[datePicker addTarget:self action:@selector(getDatePickerValue:) forControlEvents:UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)
在getDatePickerValue中,我使用datePicker.date获取新日期.
当视图关闭时(使用完成按钮),我使用datePicker.date获取日期的当前值.
现在,如果在没有'currentDate'的情况下调用视图,则选择器返回'todays date'.这就是我的pickerView被调用的'第一次'所发生的事情.对视图的每次后续调用都没有"当前日期",这给了我一个与今天不同的日期.所以,
我第一次得到今天的日期说2010年6月9日
第二次datePicker.date返回2010年6月10日
第三次2010年6月11日,依此类推.虽然它并不总是增量,但主要是它.
我已经放置了NSLog,并验证了初始日期设置正确.
问题仅出在设备上(在OS 3.0上),问题不会在模拟器上复制.
我找不到我做错了什么.我希望其他人遇到类似的问题,可以帮我解决这个问题.
我有一个NSMutableDictionary,键是对象名称的第一个字母.该视图类似于iphone上的"联系人"选项卡.此外,用户可以选择列表中的单个对象.
在代码中,我找到每个选定的对象以进一步处理它们.
NSMutableArray *objectsToAdd = [[NSMutableArray alloc] init];
NSMutableArray *array = nil;
for (NSString *key in self.nameIndex) {
array = (NSMutableArray *)[searchedNameDictionary valueForKey:key];
for (Objects *eachObject in array) {
if (eachObject.objectIsSelected){
[objectsToAdd addObject:eachObject];
}
}
}
[array release];
-(void)dealloc()
{
[searchedNameDictionary release];
}
Run Code Online (Sandbox Code Playgroud)
应用程序崩溃我释放的searchNameDictionary,其中包含正在引用释放对象的消息.
现在,如果在上面的代码中,我删除[数组发布]应用程序工作正常.
我的问题是发布'array'实际上是在searchNameDictionary中释放对象,这似乎正在发生.
不会释放数组导致内存泄漏?