我是 Xcode 的新手,并试图了解更多关于在 xcode 中编码的信息。
因此,我正在尝试了解有关目标 C 上的模型(模型操作)的更多信息。
我对 PhotoViewController.h 和 .m 文件中的 @Class 声明感到困惑
正如您在下面看到的,我已经在 appdelegate.m 和 PhotoViewController.m 文件中导入了 Photo.h
我教程的目标是 PhotoViewController.m 文件可以识别 self.photo.filename
但是,为什么必须在 PhotoViewController.h 文件中添加 @Class 和 @property 呢?
#import 命令不是已经足够了吗?@Class 是什么意思,为什么它也必须包含 @property?
注意:我试图在 @class 上发表评论 (//),但 xcode 告诉我找不到照片属性,以及当我在属性上添加评论 (//) 时
PhotoViewController.m 文件也弄乱了无法识别的照片属性。
不太明白,@class和#import同时使用,加上声明@property photo
这是Photo.m
#import "Photo.h"
@implementation Photo
-(id)init
{
self = [super init];
return self;
}
@end
和
照片.h
#import <Foundation/Foundation.h>
@interface Photo : NSObject
@property (weak, atomic) NSString *title;
@property (strong, nonatomic) NSString *detail;
@property (strong, nonatomic) NSString *filename;
@property (strong, nonatomic) NSString *thumbnail;
@end
Appdelegate.m
#import "AppDelegate.h"
#import "FeedTableViewController.h"
#import "ProfileViewController.h"
#import "FavoritesViewController.h"
#import "Photo.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
Photo *photo= [[Photo alloc]init];
photo.title = @"Demo Photo";
photo.detail = @"This is a demo photo";
photo.filename = @"demo.png";
photo.thumbnail = @"demo-thumb.png";
return YES;
}
@end
PhotoViewController.h 文件
#import <UIKit/UIKit.h>
@class Photo;
@interface PhotoViewController : UIViewController
@property (weak, nonatomic) NSString *imageFileName;
@property (weak, nonatomic) NSString *imageTitle;
@property (strong, nonatomic) Photo *photo;
@end
PhotoViewController.m 文件
#import "PhotoViewController.h"
#import "UIImageView+AFNetworking.h"
#import "Photo.h"
@implementation PhotoViewController
-(void)viewDidLoad {
// self.title = self.imageTitle;
UIImageView *imageView = [[UIImageView alloc] init];
[imageView setImageWithURL:[UIImage imageNamed:self.photo.filename]];
imageView.frame = CGRectMake(10,10,300,300);
[self.view addSubview:imageView];
UILabel *imageTitleLabel = [[UILabel alloc] init];
imageTitleLabel.text = self.imageTitle;
imageTitleLabel.frame = CGRectMake(11,320,300,40);
[self.view addSubview:imageTitleLabel];
}
@end