0

所以我正在使用 apickerview并且需要一个字符串来等于我存储在一个array. 组件的pickerview代码如下所示。

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    switch (row) {
    case 0:
        image.image = image1;
        email = EmailArray[1];
        break;
    case 1:
        image.image = image2;
        email = EmailArray[3];
        break;
    case 2:
        image.image = image3;
        email = EmailArray[5];
        break;
    }

NSLog(@"%@", email)

}

据我所知,这段代码工作得很好。这里NSLog每次都会返回正确的电子邮件。然后用户按下使用“电子邮件”字符串的按钮。这是该代码的第一部分。

- (IBAction)sendFeedback:(id)sender 
{
    NSLog(@"%@", email);
}

只有在这里NSLog不返回正确的电子邮件。它只是冻结程序并给我一个指向那个的线程错误NSLog。我没有正确地将数组对象传递给字符串吗?

如果我将代码更改为此它就可以了。

switch (row) {
case 0:
    image.image = image1;
    email = @"testEmail@gmail.com";
    break;

之后,两者都NSLogs将显示测试电子邮件。

请帮我解决这个问题。如果您需要更多信息,请询问。

编辑

这是我的 ViewController.h 文件的开头。

@interface ViewController : UIViewController
<UIPickerViewDataSource, UIPickerViewDelegate, UIImagePickerControllerDelegate> {
    NSMutableArray *EmailArray;
}

这是在 ViewController.h 中声明 email 的地方。

@implementation ViewController
NSString *email;

我得到的错误看起来像这样。

Thread 1:EXC_BAD_ACCESS(code=2, address=0x14)
4

2 回答 2

0

您的变量未保留在内存中,因此崩溃。

你有两个选择

  1. [email retain]分配后添加
  2. 启用 ARC,它将为您保留该变量。
于 2013-06-21T10:30:33.723 回答
0

您不应将其声明email为实例 var。NSString必须声明为带有复制修饰符的属性

@property (copy, nonatomic) NSString* email;
于 2013-06-21T10:19:18.613 回答