gpt4 book ai didi

ios - 将大对象从 ViewController 发送到 Objective C 中的另一个,ios?

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

我试图在一个 View Controller 中从网站获取一个 JSON 对象:QRViewController.m

我想在另一个 View Controller 中显示结果 ImagePreviewViewController.m

所以我要发送的对象类型:RetrievedJSONObject

@interface RetrievedJSONObject : NSObject


@property NSString *_id;
@property NSString *nfcId;
@property NSString *company;
@property NSString *qrId;
@property NSString *address;
@property NSString *mimeType;
@property NSString *url;
@property NSString *content;

- (void) nsLogitAll;
- (void) nsLogitWithoutContent;
- (NSData *) getContentAsData;

- (id) init;
- (id) initWithId:(NSString *) o_id :(NSString *)o_nfcId :(NSString *)o_company :(NSString *)o_address :(NSString *)o_mimeType :(NSString *)o_url :(NSString*)o_content;

@end

NSString *content有时是一个字节数组,比较大。

问题1:用segue发送这么大的对象是否有效?

问题 2: 我试图在 ImagePreviewViewController 中使 static 变量成为将接收的变量,我想初始化它而不是发送它由segue。但在这里我也对如何在 Objective-C 中创建静态对象有疑问?

最佳答案

执行此操作的最佳方法是在目标 Controller 中创建一个属性,并在 prepareForSegue 方法中分配它。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
ImagePreviewViewController *vc = (ImagePreviewViewController*)
[segue destinationViewController];
vc.jsonObject = retrievedJSONObject;
}

如果您不复制数据,内存中将只有该大字符串的一个实例,因此不会出现内存问题。您可以在目标 Controller 中声明该属性,如下所示:

@interface ImagePreviewViewController : UIViewController
@property (nonatomic, strong) RetrievedJSONObject *jsonObject;
@end

关于ios - 将大对象从 ViewController 发送到 Objective C 中的另一个,ios?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24505300/

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