记一次对象归档中的错误,initWithCoder报-创新互联
最近在使用initWithCoder中遇到了野指针的问题;
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、网站建设、蕲春网络推广、小程序开发、蕲春网络营销、蕲春企业策划、蕲春品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联公司为所有大学生创业者提供蕲春建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com情形如下:
父类的initwithcoder:
- (id)initWithCoder:(NSCoder *)aDecoder{ NSDictionary *info = [aDecoder decodeObjectForKey:@"info"]; self = [[YFModel alloc]initWithInfo:info]; return self; }
子类的initithcoder:
- (id)initWithCoder:(NSCoder *)aDecoder{ self = [super initWithCoder:aDecoder]; if (self){ _newsTitle = [aDecoder decodeObjectForKey:@"newstitle"]; _newsDescription = [aDecoder decodeObjectForKey:@"newsDescription"]; _newsID = [aDecoder decodeObjectForKey:@"newsID"]; _thumb = [aDecoder decodeObjectForKey:@"thumb"]; _newsEditor = [aDecoder decodeObjectForKey:@"newsEditro"]; _newsDetail = [aDecoder decodeObjectForKey:@"newsDetail"]; } return self; }
调试中出现如下错误:
执行
_newsTitle = [aDecoder decodeObjectForKey:@"newstitle"];
时遇到野指针问题。原因是父类的初始话方法中执行了
self = [[YFModel alloc]initWithInfo:info];
,对内存空间重新分配,子类
self = [super initWithCoder:aDecoder];
得到的指针为父类类型,内存中没有
_newsTitle_newsDescription_newsID_thumb_newsEditor_newsDetail
这些实例变量,所以报错。更改方法,在父类的初始化方法中万万不能alloc
- (id)initWithCoder:(NSCoder *)aDecoder{ self = [super init]; _info = [aDecoder decodeObjectForKey:@"info"]; return self; }
改正这样既可。
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
分享名称:记一次对象归档中的错误,initWithCoder报-创新互联
路径分享:http://scyanting.com/article/degddc.html