编码时NSArray对象会发生什么?

Seb*_*eek 8 iphone objective-c nscoding nsarray nsobject

我正在构建一个利用NSCoding将NSObject保存到documentPath的应用程序.我这样做没有问题,我只是对某事感到好奇.

我有MACompany,它实现了NSCoding委托方法.

- (void) encodeWithCoder:(NSCoder *)encoder {

     [encoder encodeObject:address_1 forKey:kAddress_1];
     [encoder encodeObject:address_2 forKey:kAddress_2];
     [encoder encodeObject:city_town forKey:kCity_Town];
     [encoder encodeObject:company_name forKey:kCompany_Name];
     [encoder encodeObject:country forKey:kCountry];
     [encoder encodeObject:date_added forKey:kDate_Added];
     [encoder encodeObject:fax forKey:kFax];
     [encoder encodeObject:parent_company_website forKey:kWebsite];
     [encoder encodeObject:postal_code forKey:kPostal_Code];
     [encoder encodeObject:state_province forKey:kState_Province];
     [encoder encodeObject:type forKey:kType];

     [encoder encodeObject:stores forKey:kStores]; //NSArray of custom NSObjects

}
Run Code Online (Sandbox Code Playgroud)

如您所见,我有一个自定义NSObjects(MAStore)的NSArray.这些对象中的每一个也实现了相同的NSCoding.

但是,我的问题是,当我encodeWithCoder:(NSCoder *)encoder在MAStore中调用方法,并且它到达时[encoder encodeObject:stores forKey:kStores],storesNSArray中存储的所有对象是否都具有encoderWithCoder:(NSCoder *)encoder调用的方法?

编辑

我之所以这么说的原因是我想知道在我投入时间做这样的事情之前它是否会起作用.我有多个带有NSArrays的自定义NSObject,它们包含更多自定义NSObject.要找到它不起作用将是一个漫长的过程.

Ben*_*tto 11

是.编码器递归地进入容器对象(数组,字典,集合等)并对所有这些对象进行编码.如果其中一个内部对象不支持,您将遇到异常NSCoding.