gpt4 book ai didi

ios - @class 和 #import 在另一个 View Controller 上,这意味着什么?

转载 作者:行者123 更新时间:2023-11-29 03:35:58 24 4
gpt4 key购买 nike

我是 Xcode 新手,正在尝试了解有关 xcode 编码的更多信息。

所以,我正在尝试了解更多有关 Objective C 上的模型(模型操作)的知识。

我对 PhotoViewController.h 和 .m 文件中的 @Class 声明感到困惑

正如您在下面看到的,我已经在 appdelegate.m 上导入了 Photo.h 以及 PhotoViewController.m 文件

我的教程的目标是 PhotoViewController.m 文件可以识别 self.photo.filename

但是,为什么必须在 PhotoViewController.h 文件中添加 @Class 和 @property 呢?

#import 命令还不够吗? @Class 是什么意思以及为什么它也必须包含 @property?

注意:我试图在 @class 上添加注释(//),但 xcode 告诉我找不到照片属性,当我在属性上添加添加注释(//)时

PhotoViewController.m 文件也因无法识别的照片属性而困惑。

不太明白,@class和#import同时使用,加上声明@property 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

最佳答案

@class PhotoPhoto 类的存在定义为 PhotoViewController.h,允许您声明 photo 属性。随后在 PhotoViewController.m 中使用 Photo 属性来访问实例变量 photo,如 self.photo[self photo]

您可以将#import "Photo.h"放入您的PhotoViewController.h中,但这样更干净:)

关于ios - @class 和 #import 在另一个 View Controller 上,这意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19175874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com