最近在使用initWithCoder中遇到了野指針的問題;

情形如下:
父類的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;
}調(diào)試中出現(xiàn)如下錯誤:
執(zhí)行
_newsTitle = [aDecoder decodeObjectForKey:@"newstitle"];
時遇到野指針問題。原因是父類的初始話方法中執(zhí)行了
self = [[YFModel alloc]initWithInfo:info];
,對內(nèi)存空間重新分配,子類
self = [super initWithCoder:aDecoder];
得到的指針為父類類型,內(nèi)存中沒有
_newsTitle_newsDescription_newsID_thumb_newsEditor_newsDetail
這些實例變量,所以報錯。更改方法,在父類的初始化方法中萬萬不能alloc
- (id)initWithCoder:(NSCoder *)aDecoder{
self = [super init];
_info = [aDecoder decodeObjectForKey:@"info"];
return self;
}改正這樣既可。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。
文章標題:記一次對象歸檔中的錯誤,initWithCoder報-創(chuàng)新互聯(lián)
文章分享:http://www.chinadenli.net/article12/degddc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、云服務器、品牌網(wǎng)站制作、做網(wǎng)站、電子商務、標簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容