AmiiQo
AmiiQo

Reputation: 353

NSLog returning nil outside (id)

I'm trying to access _urlS outside initWithURL:. If I NSLog inside it, I get a value but if I NSLog it in websiteload:, I get (null).

Really strange, anybody any ideas?

.h file:

@interface WebsiteViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate, MFMailComposeViewControllerDelegate, UIWebViewDelegate, UITextFieldDelegate> {
    UIPopoverController *popoverController;
    UIBarButtonItem *barButton;

    NSString *urlWeb;

    IBOutlet UIWebView *Website;

    UILabel *testLabel;

    IBOutlet UIButton *btn;

    IBOutlet UILabel *lbllong;

    IBOutlet UIActivityIndicatorView *activityIndicator;
}

@property (nonatomic, retain) IBOutlet UIPopoverController *popoverController;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *barButton;
@property (nonatomic, retain) NSString *urlS;

- (void)addBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc;
- (void)removeBarButtonItem;

- (id)initWithURL:(NSString *)postURL;


@end

.m file:

#import "WebsiteViewController.h"

@interface WebsiteViewController ()

@end

@implementation WebsiteViewController

@synthesize barButton, popoverController;
@synthesize urlS = _urlS;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (id)initWithURL:(NSString *)postURL
{
    self = [super init];
    if (self) {
        _urlS = [[postURL stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] retain];
        [lbllong setText:_urlS];
    }
    return self;
}

-(IBAction)websiteload:(id)sender {

    NSLog(@"%@", _urlS);


}

- (void)addBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {

}
- (void)removeBarButtonItem {

}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

Upvotes: 0

Views: 133

Answers (1)

Gabriele Petronella
Gabriele Petronella

Reputation: 108141

You need to retain the object when assigning it, since stringByTrimmingCharactersInSet: returns an autoreleased instance and therefore it gets released since you don't own it.

Change the assignment to

_urlS = [[postURL stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] retain];

Upvotes: 3

Related Questions