iphone xCode使用未声明的标识符

Ben*_*ert 2 objective-c

我刚刚开始在objective-c编程,我遇到了"使用未声明的标识符'uneImage'的问题;你的意思是'_uneImage'?".很多帖子谈到这个,但我还没有找到解决方案.

.H :



    #import 


    @interface ViewController : UIViewController 
    {
        UIImagePickerController *picker;
    }

    @property (weak, nonatomic) IBOutlet UIImageView *uneImage;


    - (IBAction)album:(id)sender;
    @end

Run Code Online (Sandbox Code Playgroud)

.M



    #import "ViewController.h"

    @interface ViewController ()

    @end

    @implementation ViewController

    - (IBAction)album:(id)sender
    {
        picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentViewController:picker animated:YES completion:nil];
    }

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
        uneImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
        [picker dismissViewControllerAnimated:YES completion:nil];
    }

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    }

    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }

    @end

Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

定义属性时xyz,默认情况下,其名称将转换_xyz为命名其支持变量.您可以使用@synthesize name;或甚至覆盖它@synthesize name = someOtherName;,但@synthesize不再需要使用它.

属性本身从外部可见,但它不会像变量那样在范围中引入非限定名称.换句话说,您不能在没有前缀的情况下使用该属性self,但您可以使用其支持变量.

长话短说,替换

uneImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
Run Code Online (Sandbox Code Playgroud)

_uneImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
Run Code Online (Sandbox Code Playgroud)

要么

self.uneImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
Run Code Online (Sandbox Code Playgroud)

使它工作.