iOS对象被识别为错误的类

时间:2012-09-21 14:53:48

标签: objective-c ios

长话短说,我在一些代码中遇到了一些奇怪的错误,我发现它来自一个被识别为错误类的对象。

这是我的代码,在我接触到对象之前放置的NSLog语句......我无法弄清楚为什么它显示为错误的类。

Photo.h

@interface Photo : NSObject
{
}

@property (nonatomic, retain) UIImage *image;
@property (nonatomic, retain) IBOutlet NSString *descr;

@end

Photo.m

@implementation Photo

@synthesize image;
@synthesize descr;

@end

CameraViewController.h

#include "Photo.h"

@interface CameraViewController : UIViewController <UIImagePickerControllerDelegate>
{
    IBOutlet UIImageView *imageView;
}

@property (nonatomic, retain) Photo *photo;

-(void)takePhoto;
-(void)resetImage;

@end

最后...... CameraViewController.m

#import "Photo.h"
....

@implementation CameraViewController

@synthesize photo;

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"%@", NSStringFromClass([_photo class]));
    // Do any additional setup after loading the view.
}

打印出来:

UIImageView

我希望它打印出来

Photo

或至少

NSObject

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

发送对象class消息检索该对象的动态类型。必须在查询对象class之前指定该对象。换句话说,将属性声明为Photo*不足以使其class返回Photo:您还必须为其分配Photo或其子类之一的实例。在后一种情况下,发送class消息的结果将不同(即将返回子类的Class)。