標籤:style color os strong io for cti ar
記錄iOS開發生涯中,因知識庫不完備、知識點不清晰,導致的各種坑。
1.You cannot remove objects from array while fast-enumerating it:
numeration is “safe”—the enumerator has a mutation guard so that if you attempt to modify the collection during enumeration, an exception is raised.
Anyway why do you need to change you container while enumerating it? Consider storing elements that need to be deleted and remove them from your container using removeObjectsInArray: or removeObjectsAtIndexes: method.
2.In NSCoding,You cannot encode an NSValue object while wrapping CLLocationcoordinate2D variable:
According to the documentation of the NSKeyedArchiver class,
A keyed archive differs from a non-keyed archive in that all the objects and values encoded into the archive are given names, or keys.
In order to archive elements of a structand give keys to them NSKeyedArchiver would need metadata to know where each field of a struct is located, and what are the names of these fields. The @encode stored with NSValue gives it enough information about the layout of a struct, but the information about the names of each field is missing.
Since there is no metadata about the names of the fields in a struct, it would be impossible to archive the data in such a way as to ensure proper un-archiving. That is why NSKeyedArchiver must refuse to archive NSValues with embedded C structs.