NSString等于(null)的问题

时间:2010-06-15 15:07:43

标签: iphone objective-c nsstring

我有一个名为MainViewController的UIViewController 我有另一个名为LeftSharingViewController的UIViewController;

我想在我的LeftSharingViewController中使用MainViewController中的NSString

我有一个问题,我总是得到(null)而不是NSString想要的值。

这是我的代码以及NSString如何获得它的价值 MainViewController:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
     leftWebViewString = [NSString stringWithString:leftWebView.request.URL.absoluteString];
}

LeftSharingViewController.h:

#import <UIKit/UIKit.h>
#import "MainViewController.h"
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>

@class MainViewController;
@interface LeftSharingViewController : UIViewController         <MFMailComposeViewControllerDelegate> {
MainViewController *mainViewController;
NSString *leftWebViewUrl;
}

@property (nonatomic, retain) MainViewController *mainViewController;
@property (nonatomic, retain) NSString *leftWebViewUrl;
@end

LeftSharingViewController.m:

#import "LeftSharingViewController.h"
#import "MainViewController.h"

@implementation LeftSharingViewController
@synthesize mainViewController;
@synthesize leftWebViewUrl;
- (void)viewWillAppear:(BOOL)animated {
self.leftWebViewUrl = self.mainViewController.leftWebViewString;
}
#pragma mark -
#pragma mark Compose Mail
-(void)displayComposerSheet 
{
MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init];
mailPicker.mailComposeDelegate = self;

[mailPicker setSubject:@"Check Out This Website!"];
[mailPicker setMessageBody:[NSString stringWithFormat:@"Take a look at this site:%@", leftWebViewUrl] isHTML:YES];

mailPicker.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:mailPicker animated:YES];
[mailPicker release];

}

谢谢!

1 个答案:

答案 0 :(得分:0)

MainViewController上,您永远不会保留您创建的NSString。您正在使用stringWithString:,它返回一个自动释放的对象。

您应该保留它,或者(更容易)更改您的代码以使用您已经保留的访问者,如下所示:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    self.leftWebViewString = [NSString stringWithString:leftWebView.request.URL.absoluteString];
}

作为旁注,如果您从MainViewController导航到LeftSharingViewController,而不是从LeftSharingViewController“拉”MainViewController中的数据,我会这样做其他方式: 在MainViewController中,在显示LeftSharingViewController的视图之前,我会设置所需的属性。