[英]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.