私は 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 で photo プロパティが見つからないことがわかり、プロパティにコメント (//) を追加すると、
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