0

私は 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
4

2 に答える 2

1

@class PhotoPhoto写真のプロパティをPhotoViewController.h宣言できるクラスの存在を定義します。Photo プロパティは、後でPhotoViewController.mこのようにインスタンス変数 photo にアクセスするために使用されself.photoます。[self photo]

#import "Photo.h"あなたはあなたのものを入れることができましPhotoViewController.hたが、この方法はよりきれいです:)

于 2013-10-04T07:49:33.053 に答える
0

@財産

値を取得したいときはいつでも、その変数をプロパティとして宣言する必要があるため、ゲッターメソッドを個別に記述する必要はありません。

Photo.m にも @synthesize を実装する必要があります。 @synthesize はセッター メソッドとして機能します。

于 2013-10-04T07:50:59.490 に答える