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;またはでオーバーライドできます@synthesize name = someOtherName;が、の使用@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 に答える