所以我正在使用pickerview
并且需要一个字符串来等于我存储在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中声明电子邮件的地方。
@implementation ViewController
NSString *email;
我得到的错误看起来像这样。
Thread 1:EXC_BAD_ACCESS(code=2, address=0x14)
答案 0 :(得分:0)
您不应将email
声明为实例var。必须将NSString
声明为具有复制修饰符
@property (copy, nonatomic) NSString* email;
答案 1 :(得分:0)
您的变量未保留在内存中,因此崩溃。
您有两个选择
[email retain]