iOS 优先使用class 相比于 struct

一个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://upload-images.jianshu.io/upload_images/12165524-92e2df798359e34e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 ''crash'')

推测原因

原来在xcode10还是11开发的功能,升级到xcode12突然短路,推测是编译器优化(有待考证)了assign struct导致被提前释放crash

解决方案

将SEPShareStruct 从struct 变成 NSObject 解决

你可能感兴趣的:(iOS 优先使用class 相比于 struct)