【发布时间】:2017-08-22 09:45:46
【问题描述】:
在我的应用程序中,我有一个struct,它包含我的所有数据。它适用于以前版本的 Xcode。但是当我使用 Xcode 9、beta 5 到 iOS 11 设备构建它时,里面的一些数据丢失了。
当我将 struct 对象作为函数的参数传递给另一个活动时,就会发生这种情况。
我的结构如下所示:
typedef struct {
NSString *title;
MainController *mainController;
//....
//....
//more than 200 objects
} mystruct;
数据丢失后,当我尝试访问它时,Xcode 显示 [EXC_BAD_ACCESS] 并且应用程序崩溃。 Xcode 9 中的结构有大小限制吗?
更新 1: 添加创建和传递源
//declare struct
mystruct m;
memset(&m,0,sizeof(mystruct));
// setting data for struct
....
...
...
// passing param
[anotherObj showData:&m];
方法读取另一个对象的值:
- (void)showData:(mystruct *)ms
{
// get data of struct
[self showText : ms->title];
}
注意:仅在 xCode 9 和 iOS 11 上发生
- xCode 9 + iOS 11 -> 错误
- xCode 9 + iOS 10 -> 好的
- xCode 8 + iOS 11 ->好的
- xCode 8 + iOS 10 -> 好的
- xCode 7 + iOS 11 -> 好的
- xCode 7 + iOS 10 ->好的
【问题讨论】:
-
请添加用于创建结构对象并传递它的代码。此外,带参数的函数代码。
-
我添加了创建和传递源代码。
-
你没有因为有一个带有引用的结构而收到警告吗?这是纯Objective-C,而不是Objective-C++?你使用 ARC 吗?
-
感谢您的建议。我不使用 ARC。
标签: objective-c struct ios11 xcode9