Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIPickerView崩溃_Ios_Objective C_Ios7_Uipickerview - Fatal编程技术网

Ios UIPickerView崩溃

Ios UIPickerView崩溃,ios,objective-c,ios7,uipickerview,Ios,Objective C,Ios7,Uipickerview,我不知道为什么下面的代码中有腐败。我几乎从示例中提取了现有的“实现”。不过,当我尝试更改picker控制器的值时,代码崩溃,因为cloudProviders指向一些随机内存。 请告知 // SettingsViewController.h #import <UIKit/UIKit.h> @interface SettingsViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDa

我不知道为什么下面的代码中有腐败。我几乎从示例中提取了现有的“实现”。不过,当我尝试更改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
//SettingsViewController.h
#进口
@接口设置查看控制器:UIViewController
@属性(保留,非原子)IBUIPickerView*选择器;
@财产(保留,非原子)NSArray*云提供商;
@结束
//设置VIEWCONTROLLER.m
#导入“setingsviewcontroller.h”
@接口设置可视控制器()
@结束
@实现设置可视控制器
-(无效)viewDidLoad
{
[超级视图下载];
//加载视图后,通常从nib执行任何其他设置。
_cloudProviders=@[@“BOX”、@“Yandex”、@“Other”];
NSLog(@“正在执行viewDidLoad”);
}
-(无效)未收到记忆警告
{
[超级记忆警告];
//处置所有可以重新创建的资源。
}
-(无效)解除锁定{
[_选择器释放];
[super dealoc];
}
#布拉格标记-
#pragma-mark-PickerView数据源
-(NSInteger)PickerView中的组件数量:
(UIPickerView*)pickerView
{
返回1;
}
-(NSInteger)pickerView:(UIPickerView*)pickerView
行数组件:(NSInteger)组件
{
返回_cloudProviders.count;
}
-(NSString*)pickerView:(UIPickerView*)pickerView
titleForRow:(NSInteger)行
forComponent:(NSInteger)组件
{
返回_cloudProviders[row];
}
#布拉格标记-
#pragma-mark-PickerView委托
-(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row
不完整:(NSInteger)组件
{
NSLog(@“正在执行didSelectRow”);
}
/*
-(iAction)textFieldReturn:(id)发件人
{
[发送方辞职第一响应方];
}
*/
@结束
另外,人们使用什么工具来追踪iOS上的内存泄漏等?有什么可以告诉我谁修改了我的指针吗

谢谢你,安娜是对的。
将属性设置为self.cloudProviders可以解决此问题。

只要确保只将1 IB连接到一个对象,检查接口生成器崩溃消息是什么?看起来您正在使用手动内存管理(因为您正在调用
dealloc
中的
release
)。在这种情况下,您可能应该执行
self.cloudProviders=@[…]
viewDidLoad
中。如果您切换到使用ARC,其中一些问题将为您解决。我仍然不理解为什么这两个问题不等价-我的属性将生成为_CloudProviders,但您是正确的。自助云提供商生存下来。谢谢你安娜,我再次感到抱歉。如何在stackoverflow上标记您的答案为正确?我看不到这样做的选择。一定是糟糕的一天。我道歉,再次感谢你。