长话短说,我在一些代码中遇到了一些奇怪的错误,我发现它来自一个被识别为错误类的对象。
这是我的代码,在我接触到对象之前放置的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
我错过了什么吗?
答案 0 :(得分:2)
发送对象class
消息检索该对象的动态类型。必须在查询对象class
之前指定该对象。换句话说,将属性声明为Photo*
不足以使其class
返回Photo
:您还必须为其分配Photo
或其子类之一的实例。在后一种情况下,发送class
消息的结果将不同(即将返回子类的Class
)。