Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
Objective c 在目标C中使用和访问全局/外部变量_Objective C_Global Variables - Fatal编程技术网

Objective c 在目标C中使用和访问全局/外部变量

Objective c 在目标C中使用和访问全局/外部变量,objective-c,global-variables,Objective C,Global Variables,我知道这个问题已经被问了十亿次了,但我的问题还没有得到回答。很抱歉重复了 所以我知道如何声明和定义外部变量(如果我错了,请纠正我): 在foo.h文件中: extern NSString *foo; 在foo.m文件中: NSString *foo = @"fooey"; 然后说我想访问/更改hoo.m文件中的变量。我该怎么做?在.h中 @interface SOViewController : UIViewController{ NSString * variable; }

我知道这个问题已经被问了十亿次了,但我的问题还没有得到回答。很抱歉重复了

所以我知道如何声明和定义外部变量(如果我错了,请纠正我):

在foo.h文件中:

extern NSString *foo;
在foo.m文件中:

NSString *foo = @"fooey";
然后说我想访问/更改hoo.m文件中的变量。我该怎么做?

在.h中

 @interface SOViewController : UIViewController{
    NSString * variable;
 }
在.m中,您可以在任何地方设置它

例如,viewDidLoad

您还可以在.m文件中通过放置声明来声明

@interface SOViewController(){
    NSString * variable;
}
  // @property (strong, nonatomic) NSString * myString; might be appropriate here instead
@end
在@implementation之前

理想情况下,由于这是面向对象编程,因此最佳实践是将字符串作为类的属性

如果你真的设置了extern关键字,这里有一篇关于如何使用它的stackoverflow帖子

编辑

问题归结为如何传递变量。您可以阅读本文,了解如何使用seguing实现这一点的示例。

In.h

 @interface SOViewController : UIViewController{
    NSString * variable;
 }
在.m中,您可以在任何地方设置它

例如,viewDidLoad

您还可以在.m文件中通过放置声明来声明

@interface SOViewController(){
    NSString * variable;
}
  // @property (strong, nonatomic) NSString * myString; might be appropriate here instead
@end
在@implementation之前

理想情况下,由于这是面向对象编程,因此最佳实践是将字符串作为类的属性

如果你真的设置了extern关键字,这里有一篇关于如何使用它的stackoverflow帖子

编辑


问题归结为如何传递变量。您可以阅读本文,了解如何使用seguing实现这一点的示例。

是的,这就是您定义/声明seguing的方式。但是除了foo.h/m之外,我如何在不同的类中访问它呢?啊,我明白了。您需要将其传递给该类。将其声明为外部变量(.h),然后在prepareForSegue中或在声明新的viewController时,在需要它的viewController中设置一个属性。好的,将其设置为其他viewController中的属性。你有如何做到这一点的链接吗?或者你可以把它写在答案里。这是一个如何使用segues执行此操作的示例。是的,这就是您定义/声明它的方式。但是除了foo.h/m之外,我如何在不同的类中访问它呢?啊,我明白了。您需要将其传递给该类。将其声明为外部变量(.h),然后在prepareForSegue中或在声明新的viewController时,在需要它的viewController中设置一个属性。好的,将其设置为其他viewController中的属性。你有如何做到这一点的链接吗?或者你可以把它写在答案里。这是一个如何使用segues执行此操作的示例。