一个2天的填坑记录
原来某个模型是用结构体来定义大概如下:
struct SEPShareStruct {
NSString *url;
id image; //url | UIImage
id thumbimage; //url | UIImage
NSString *title;
NSString *content;
NSString *miniProgramPath;
NSString *miniProgramUsername;
NSString *miniProgramScene;
};
typedef struct CG_BOXABLE SEPShareStruct SEPShareStruct;
成员变量:
@property (nonatomic, assign) SEPShareStruct shareContent;
某处调用crash如下,说有指针被释放(揪出来是shareContent):
Thread 1: EXC_BAD_ACCESS (code=1, address=0xacd86f350)
![crash](https://img.haomeiwen.com/i12165524/92e2df798359e34e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 ''crash'')
推测原因
原来在xcode10
还是11开发的功能,升级到xcode12
突然短路,推测是编译器优化(有待考证)了assign struct导致被提前释放crash
解决方案
将SEPShareStruct 从struct 变成 NSObject 解决
网友评论