DQM_PiterYang

Results 2 comments of DQM_PiterYang

自己回答一下 希望没BUG; (void)photoView:(HXPhotoView *)photoView changeComplete:(NSArray *)allList photos:(NSArray *)photos videos:(NSArray *)videos original:(BOOL)isOriginal { if (photoView == self.photoView) { if (!_adding) { if (allList.count == 0 && self.model.endSelectedList.count == 0) { return;//首次进来...

这是因为Swift的debug和release模式下的编译优化级别是不同的。 在debug模式下,Swift编译器的优化级别很低,主要是为了保证代码的调试性,使得代码行为更加可预测,更容易进行调试。在这种情况下,即使你的模型属性是用let声明的,HandyJSON可能也能正确地解析JSON并赋值给这些属性,因为编译器在这种模式下不会对这些行为进行过多的优化和干预。 然而,在release模式下,Swift编译器的优化级别会提高,以提高代码的运行效率和性能。在这种模式下,编译器可能会更加严格地遵守Swift的语义规则,因此不允许对let声明的常量进行修改。这就可能导致HandyJSON在尝试修改这些属性时失败,从而导致解析错误。 因此,如果你的模型需要被HandyJSON或其他类似的库修改,你应该使用var而不是let来声明你的模型属性。这样可以确保你的代码在debug和release模式下都能正确地工作。