我不明白为什么在下面的代码中有一个损坏。我在很大程度上从示例中提升了现有的“实现”。尽管如此,当我尝试更改picker控制器的值时,代码崩溃,因为cloudProviders指向一些随机内存。请给我建议。
// SettingsViewController.h
#import <UIKit/UIKit.h>
@interface SettingsViewController : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource>
@property (retain, nonatomic) IBOutlet UIPickerView *picker;
@property (retain, nonatomic) NSArray *cloudProviders;
@end
// SettingsViewController.m
#import "SettingsViewController.h"
@interface SettingsViewController ()
@end
@implementation SettingsViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_cloudProviders = @[@"BOX", @"Yandex", @"Other"];
NSLog(@"Executing viewDidLoad");
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)dealloc {
[_picker release];
[super dealloc];
}
#pragma mark -
#pragma mark PickerView DataSource
- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
return _cloudProviders.count;
}
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component
{
return _cloudProviders[row];
}
#pragma mark -
#pragma mark PickerView Delegate
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{
NSLog(@"Executing didSelectRow");
}
/*
-(IBAction)textFieldReturn:(id)sender
{
[sender resignFirstResponder];
}
*/
@end另外,人们使用什么工具来追踪iOS上的内存泄漏之类的情况?有什么可以告诉我是谁修改了我的指针吗?
谢谢
发布于 2014-08-11 23:06:14
安娜是对的。将该属性设置为self.cloudProviders可以解决此问题。
https://stackoverflow.com/questions/25245698
复制相似问题