0

いくつかのクラスを含むアプリケーションを作成しました。「photoItem」という名前のクラスの1つとそのクラスには、画像アイテムとメソッドが含まれています。

appDelagateでそのメソッドを使用しようとしましたが、機能しませんでした。

私のphotoitem.hは:#import

@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

そして私のappdelagateは:

 #import "AppDelegate.h"
 #import "PersonListViewController.h"
 #import "RecentsViewController.h"
 #import "PhotoListViewController.h"
 #import "photoItem.h"

 @implementation AppDelegate

 @synthesize window = _window;

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
     // Override point for customization after application launch.

     photoArray = [[NSMutableArray alloc] init];
    [photoArray addObject:[photoItem XXXXXX];

}

最後の行にメソッドを実装したい:[photoArray addObject:[photoItem XXXXXX]しかし、xcodeではこのメソッドを選択して使用することができませんでした。

何が問題ですか?

4

1 に答える 1

1

現在のコードでは、次の理由で機能していません。 1. photoArray をプロパティとしてリストし、合成する必要があります。

インターフェイス (.h) で次のようにします。

@property(nonatomic,strong) NSMutableArray *photoArray;

@implementation ディレクティブの後の実装 (.m) で、 @synthesize ウィンドウの前または後にこれを行います。

 @synthesize photoArray;

また、クラスとクラスのインスタンスをすばやく区別できるように、最初に大文字のセットでクラスに名前を付ける必要があります。会社のイニシャルや名前を前に付けることができます。たとえば、名前が John Smith の場合、クラス JSPhotoItem に名前を付けることができます。コードは次のようになります。

 photoArray = [[NSMutableArray alloc] init];
 JSPhotoItem *photoItem=[JSPhotoItem alloc] init];
  // perform any other initialization of the photoItem object

 [photoArray addObject:photoItem];

幸運を

T

于 2012-05-30T20:14:49.083 に答える