gpt4 book ai didi

ios - 在 objective-c 中传回数据的正确方法

转载 作者:行者123 更新时间:2023-11-28 19:02:03 25 4
gpt4 key购买 nike

VC1.h

#import "VC2.h"

@interface VC1 : UIViewController

@property(nonatomic, strong)NSString *vc1String;

@end

VC1.m

VC2 *vc2Obj = [[VC2 alloc]init];
vc2Obj.vc2String = @"Hello from VC1";

VC1 将值传递给 VC2。


VC2.h

#import "VC1.h"

@interface VC2 : UIViewController

@property(nonatomic, strong)NSString *vc2String;

@property(nonatomic, weak)VC1 *vc1Obj;

@end

尝试将数据传回 VC1,但 @property(nonatomic, weak)VC1 *vc1Obj; 给出错误,unknown type name VC1 did you mean VC2

我了解委托(delegate),但想知道这种方法有什么问题以及为什么它不能识别 VC1?

最佳答案

正如kernix所说,在VC2.h中,你应该使用@class VC1,而不是#import "VC1.h"

原因是因为两个#import语句创建了循环定义。在 VC1.h 中,您是说:“要定义 VC1,您需要先定义 VC2。”但是在 VC2.h 中,您是说:“要定义 VC2,您需要先定义 VC1。”编译器不能先定义这两个类。

解决这个问题的方法是将声明类与定义类分开。语句 @class VC1; 说:“嘿,我要定义一个名为 VC1 的类;我现在不做,但我保证会做在一切都链接起来并运行之前的某个时候。”现在,当您说 VC1 时,编译器知道您的意思。

请注意,您仍然需要在 VC2.m 中#import "VC1.h",否则编译器将无法找到编译 VC2 所需的定义>.

关于ios - 在 objective-c 中传回数据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24016219/

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