我想创建一个NSDateFormatter来解析像这样的日期"2014-05-13 23:31:41.374577".所以:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss.SSSSSS";
NSString *dateString = @"2014-05-13 23:31:41.374577";
NSDate *date = [formatter dateFromString:dateString];
NSString *anotherDateString = [formatter stringFromDate:date];
Run Code Online (Sandbox Code Playgroud)
但是,anotherDateString是的2014-05-13 23:31:41.374000.为什么它会截断毫秒?
这个问题已被多次询问,但我的情况略有不同.假设我有一个观察者的std :: vector,当某个事件发生时我会通知它:
void SomeClass::doThing() {
// do things ...
// notify observers
for (auto* o : mObservers) {
o->thingHappened();
}
}
Run Code Online (Sandbox Code Playgroud)
如果在thingHappened观察者的实现中调用一个方法SomeClass从观察者中删除自己怎么办?有哪些最佳方法可以解决这个问题?
一种可能性是mObservers在for循环之前复制并使用它,但额外的副本可能是浪费.
另一种可能性是在循环结束后将更改委托给要运行的数组,也许在循环开始之前设置一个锁(只是一个布尔值),并且在设置此锁定时,变换向量的方法委托自己调用之后当lock设置为false时可以完成循环(可以使用lambdas向量完成...非常麻烦).