0

NSUrl を返す関数があり、それを別のクラスで使用したいと考えています。しかし、他のクラスでそれを取得しようとすると、null が返されます。これが私のファーストクラスです

@interface UOEventDetailController : UIViewController {
NSURL *imgData;
}
@property(nonatomic, retain)NSURL *imgData;
-(NSURL *)imgData;

@implementation UOEventDetailController
@synthesize imgData;

.m ファイル

-(NSURL *)imgData{
UOEventPost *post = (UOEventPost *)self.event;
NSURL *url = [NSURL URLWithString:post.postImageURL];
return url;
}

このクラスでURLを取得したい

@class UOEventDetailController;

@interface UOEnlargeImageViewController : UIViewController {
IBOutlet UIImageView *enlargedImage;

}
@property (nonatomic, retain) UOEventDetailController *controller;
@property (nonatomic, retain) IBOutlet UIImageView *enlargedImage;

.m ファイル

@implementation UOEnlargeImageViewController
@synthesize controller;
@synthesize enlargedImage;

- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Enlarged Image";
controller = [[UOEventDetailController alloc]init];
NSURL *url = [controller imgData];
NSLog(@"%@",url);


}
@end

post.postImageUrl 以外のオブジェクトを取得できます。たとえば、post.postImageUrl の代わりに、@"omg"、@"god" のような文字列を入力すると、他のクラスで取得されます...

編集

-(IBAction)enlargeImg{
UOEventPost *post = (UOEventPost *)self.event;
UOEnlargeImageViewController *enlarge = [[UOEnlargeImageViewController alloc]initWithNibName:nil bundle:nil];
enlarge.temp = post.postImageURL;
[self.navigationController pushViewController:enlarge animated:YES];
[suggestPopupView removeFromSuperview];
[enlarge release];
}
4

2 に答える 2

1

これは、新しいオブジェクトを作成しているためです。新しいオブジェクトの関連属性は空であるため、url も null です。

于 2012-05-11T11:08:57.653 に答える
0

新しいオブジェクトが作成され、目的の状態ではないため、オブジェクトはnullになります。フローが逆方向の場合は、protocol&delegateを使用してオブジェクトを別のクラスに渡す必要があります。それ以外の場合は、同じオブジェクトで作業する必要があります。

于 2012-05-11T11:49:50.080 に答える