gpt4 book ai didi

ios - 在外部声明时,变量会传递给推送的 ViewController

转载 作者:行者123 更新时间:2023-11-29 02:43:06 24 4
gpt4 key购买 nike

我有一个简单的例子:

  1. 导航 View Controller
  2. View Controller
  3. ViewController2

在 View Controller 中:

#import "ViewController.h"
#import "ViewController2.h"

@interface ViewController ()

@end

NSArray *array;// Neither in @interface nor in @implementation

@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];

array = [[NSArray alloc] initWithObjects:@"12345", nil];

ViewController2 *vc = [[ViewController2 alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}

在 ViewConroller2 中:

#import "ViewController2.h"

@interface ViewController2 ()

@end

NSArray *array;

@implementation ViewController2

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

}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];

NSLog(@"%@",array);


}

我不明白为什么 viewController2 中的数组从 viewController 传递数据?能解释一下吗?

伙计们,我知道如何将数据传递到另一个带有属性的 viewController 。我想了解为什么在这种情况下会传输数据!

最佳答案

因为您已将 NSArray *array; 声明为全局变量。而且,只要变量在源文件中的某处定义,链接器就能够找到它并将其他源文件中的所有引用适本地链接到该定义。

我们还使用 extern 声明了全局变量

extern int GlobalVar;

这里,extern 告诉编译器这只是一个声明,表明存在由 GlobalVar 标识的 int 类型的对象,链接器的工作是确保。

在你的一个源文件中,你可以说

int GlobalVar = 7;

我相信这就是您的原因。

关于ios - 在外部声明时,变量会传递给推送的 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25507201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com