0

画像アイテムで作成する必要がある配列を定義するアプリケーションを構築する必要があります。すべての画像アイテムには、画像、名前、写真家の名前があります。私は自分のイメージアイテムクラスを構築し、私の定義が正しくて良いかどうかを確認してほしいです(私は目的cを学び始めたところです)。セットのメソッドを強調してほしい。

ここにphotoitem.hがあります:

#import <Foundation/Foundation.h>

@interface photoItem : NSObject
 {
     UIImage *imageView;
     NSString *photoNameLabel;
     NSString *photographerNameLabel;
     UIButton *viewPhoto;
 }
 @property(readonly) NSString *name;
 @property(readonly) NSString *nameOfPhotographer;
 @property(readonly) UIImage *imageItem;

 -(id)makePhotoItemWIthPhoto:(UIImage*)image name:(NSString*)photoName photographer:   (NSString*)photographerName;

@end

ここに私のphotoitem.mがあります:

#import "photoItem.h"

@implementation photoItem

@synthesize name;
@synthesize nameOfPhotographer;
@synthesize imageItem;

-(id)makePhotoItemWIthPhoto:(UIImage*)image name:(NSString*)photoName photographer:(NSString*)photographerName
{
    [self setName:photoName];
    [self setNameOfPhotographer:photographerName];
    [self setImageItem:image];
    return self;
}

-(void) setName:(NSString *)name
{
    photoNameLabel = name;
}  

-(void) setNameOfPhotographer:(NSString *)nameOfPhotographer
{
    photographerNameLabel = nameOfPhotographer;
}

-(void)setImageItem:(UIImage *)imageItem
{
    imageView = imageItem;
}
@end

私のエラーを修正していただければ幸いです(いくつかある場合)。ありがとう。

4

1 に答える 1

0

2つの問題が思い浮かびます。

1)-(id)makePhotoItemWIthPhoto:name:photographer:としてより良いかもしれません-(id)initWithPhoto:name:photographer:。それ以外の場合、呼び出し元は最初にオブジェクトを有効にする必要がallocあり、次にメソッドを呼び出します。その時点で、の戻りは意味がありません。例:initselfself

-(idinitWithPhoto:(UIImage*)image name:(NSString*)photoName photographer:(NSString*)photographerName {
    self = [super init];
    if (self) {
        [self setName:photoName];
        [self setNameOfPhotographer:photographerName];
        [self setImageItem:image];
    }
    return self;
}

2)3つの読み取り専用プロパティは、メソッドで初期化する変数に接続されていないため、目的がないようですmakePhotoItemWIthPhoto:

于 2012-05-29T17:05:08.527 に答える