Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 访问存储在其中的方法之外的属性_Ios_Objective C - Fatal编程技术网

Ios 访问存储在其中的方法之外的属性

Ios 访问存储在其中的方法之外的属性,ios,objective-c,Ios,Objective C,在这个方法中,我将temp保存到一个NSString中 [_weatherAPI currentWeatherByCoordinate:CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude) withCallback:^(NSError *error, NSDictionary *result) { downloadCount++; if (downloadCo

在这个方法中,我将temp保存到一个NSString中

[_weatherAPI currentWeatherByCoordinate:CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude) withCallback:^(NSError *error, NSDictionary *result) {
    downloadCount++;
    if (downloadCount > 1)
        if (error) {
        }

    _saveTemp = result[@"main"][@"temp"];
如何在此方法之外访问此NSString的值?例如,我正在尝试这样做

@property (nonatomic) NSString *saveTemp;

你试过self.saveTemp吗

此外,还应使属性
strong

- (void)viewDidLoad
{
    NSLog(@"%@", _saveTemp);
}

您所做的是完全正确的,只是在查看时加载了weatherApi。。。尚未调用对象,因此_saveTemp未初始化。您应该使用[self setSaveTemp:…]将其设置在“天气事件”中,以使其正确保留。

尝试使用“复制”创建您的属性

试着打电话给塞特

@property (copy, nonatomic) NSString *saveTemp;

你能给出一个代码示例吗?我设置了[self saveTemp],但不确定从那里做什么?更改“\u saveTemp=result[@“main”][@“temp”];”至[self-setSaveTemp:result[@“main”][@“temp”];直接设置为backing ivar会绕过编译器为您合成的setter,该setter中有一个隐藏的retain。并将日志记录尝试移动到生命周期的后期,您知道另一个方法有时间触发,可能是ViewDidApparanimated:而不是didLoadOk,我明白了,然后如何在视图加载时调用saveTemp?作为调用NSLog(@“%@”,_saveTemp);返回null@joshuahornby10在中,如果您在一个视图中工作,那么在viewDidLoad中,它将始终为零,因为所有方法都在viewDidLoad之后调用,但您可以在viewDidLoad中调用方法,在该方法中,您将smth保存到Temp,在调用日志之后,您将Temp保存到viewDidLoad中。我希望您能理解我的英语:)您正在编写的这个setter实际上并没有实现“copy”,因此在标题中声明“copy”并在其中创建属性原型除了误导读者之外,没有任何作用
@property (copy, nonatomic) NSString *saveTemp;
[self setSaveTemp:result[@"main"][@"temp"]];

-(void)setSaveTemp:(NSString *)saveTemp {
   _sateTemp = saveTemp;
}