-2

我创建了一个 getter 来获取变量的内容,但它不起作用。

这里的代码:

-(void)documentURLReceived:(NSURL *)url{

    _getUrl = [[NSURL alloc] init];
    _getUrl = url;
    NSLog(@"Result: %@", _getUrl);
}
-(void)getUrl{
    NSLog(@"getUrl: %@", _getUrl);
}

这是控制台中的结果:

结果:http://www.google.com

获取网址:(空)

我不明白为什么!

这是我的财产:

@property (strong, nonatomic) NSURL *getUrl;

谢谢你的帮助 :)

4

2 回答 2

2

如果您使用 ARC 和最新的 Xcode - 摆脱 getURL 方法 - 除非您需要执行自定义逻辑,否则不应覆盖此方法,此外,您的 getURL 方法不返回任何内容并且是 void 方法 - 所以变量很可能设置但您的方法正在覆盖自动生成的 getter 并且没有返回任何内容。

在 Xcode 中进行了测试

在头文件中我有:

@property (nonatomic, strong) NSURL *getURL;

然后在实现文件中我有:

- (void)documentURLReceived:(NSURL *)url
{
    _getURL = url;
    NSLog(@"%@",_getURL);
}

输出:

2013-04-04 23:29:27.681 VitalityDesignTestSuite[90518:c07] http://www.google.com

okie dokie 我给你写了一个示例:

http://bit.ly/10yWb36

使用那些你可以去的:

MyViewController *mvc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
//Now you can set the myURL variable directly
[mvc setMyURL:[NSURL URLWithString:@"http://www.google.com"]];
NSLog(@"Direct Setting: %@",mvc.myURL);

//OR you can call the method your wrote
[mvc documentDidReceiveURL:[NSURL URLWithString:@"http://www.google.com"]];
NSLog(@"Selector Setting: %@",mvc.myURL);

输出:

2013-04-04 23:39:09.407 VitalityDesign[92197:c07] 直接设置:http ://www.google.com 2013-04-04 23:39:09.408 VitalityDesign[92197:c07] 选择器设置:http:// /www.google.com

希望这可以帮助

于 2013-04-04T12:02:18.273 回答
-3

首先,你在 url 中得到了什么吗?

如果否,-> 处理它

如果是,请尝试执行以下操作:

_getUrl = [[NSURL alloc] init];
_getUrl = url;
[_getUrl retain];
NSLog(@"Result: %@", _getUrl);

享受编程!

于 2013-04-04T11:58:12.047 回答