2

我刚开始在 Objective-C 中编程,我遇到了“使用未声明的标识符 'uneImage';你的意思是 '_uneImage' 吗?”的问题。很多帖子都在谈论这个,但我还没有找到解决方案。

。H :



    #import 


    @interface ViewController : UIViewController 
    {
        UIImagePickerController *picker;
    }

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


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

.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

4

3 回答 3

5

当你定义一个属性xyz时,默认情况下它的名字被转换为_xyz命名它的支持变量。@synthesize name;您可以使用or 甚至覆盖它,但不再需要@synthesize name = someOtherName;使用 of 。@synthesize

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

长话短说,替换

uneImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];

_uneImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];

或者

self.uneImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];

让它工作。

于 2013-02-09T20:12:26.310 回答
2

您没有名为uneImage. 您有一个具有该名称的属性和一个名为 的自动合成实例变量_uneImage

所以改变:

uneImage.image = ...

到:

self.uneImage.image = ... // use the property

或者:

_uneImage.image = ... // use the generated instance variable
于 2013-02-09T20:12:17.200 回答
0

您正在访问一个属性,因此您需要将“self”放在变量前面:

self.uneImage.image = ....
于 2013-02-09T20:12:10.423 回答