簡體   English   中英

iPhone XCode使用未聲明的標識符

[英]iphone xCode use of undeclared identifier

我剛開始在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

定義屬性xyz ,默認情況下,其名稱會轉換為_xyz來命名其后備變量。 您可以使用@synthesize name;覆蓋它@synthesize name; 甚至@synthesize name = someOtherName; ,但不再需要使用@synthesize

該屬性本身從外部是可見的,但是它不會像變量一樣在范圍內引入非限定名稱。 換句話說,如果不使用self前綴就不能使用該屬性,但是可以使用其后備變量。

長話短說,替換

uneImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];

_uneImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];

要么

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

使它工作。

您沒有名為uneImage的實例變量。 您有一個具有該名稱的屬性和一個名為_uneImage的自動合成的實例變量。

所以改變:

uneImage.image = ...

可以:

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

要么:

_uneImage.image = ... // use the generated instance variable

您正在訪問屬性,因此需要在變量前放置“ self”:

self.uneImage.image = ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM