NSObject 模型应该传入和传出控制器方法,还是可以就地改变?
Should a NSObject model be passed in and out of a controller method or can it be mutated in place?
我正在使用 NSObject 派生模型来跟踪有关面部识别应用程序中个人的数据。
我的应用程序流程如下图所示。创建模型后,每个方法都会执行一些图像处理并将结果分配给传入的模型。然后将模型传回。
CVPersonModel * newPerson = [[CVPersonModel alloc] initWithImage:img];
newPerson = [self.faceProcessor processFaceFromImage:preProcessedImg withModel:newPerson];
newPerson = [self.eyeProcessor processEyesFromImage:processFaceFromImage:preProcessedImg withModel:newPerson];
newPerson = [self.lipsProcessor processLipsFromImage:preProcessedImg withModel:newPerson];
问题是我 运行 遇到了一些与此模型相关的内存泄漏,我想知道其中的一部分是否可能会跨多个线程多次重新分配它?
就地改变对象会更好(并且可能)吗?
上面的调用是相同的,除了每个方法 returns 无效。因为模型实际上是一个指针,所以调用方法中的 newPerson 应该反映每个子方法中所做的所有更改吧?
为什么不将这些过程方法作为 CVPersonModel 的一部分并在对象本身上调用它们?如果您使用同一对象的变异实例设置该对象的实例,最好只使用增变器方法。
所以它会像这样:
[newPerson processFaceWithImage:preProcessedImg];
我正在使用 NSObject 派生模型来跟踪有关面部识别应用程序中个人的数据。
我的应用程序流程如下图所示。创建模型后,每个方法都会执行一些图像处理并将结果分配给传入的模型。然后将模型传回。
CVPersonModel * newPerson = [[CVPersonModel alloc] initWithImage:img];
newPerson = [self.faceProcessor processFaceFromImage:preProcessedImg withModel:newPerson];
newPerson = [self.eyeProcessor processEyesFromImage:processFaceFromImage:preProcessedImg withModel:newPerson];
newPerson = [self.lipsProcessor processLipsFromImage:preProcessedImg withModel:newPerson];
问题是我 运行 遇到了一些与此模型相关的内存泄漏,我想知道其中的一部分是否可能会跨多个线程多次重新分配它?
就地改变对象会更好(并且可能)吗?
上面的调用是相同的,除了每个方法 returns 无效。因为模型实际上是一个指针,所以调用方法中的 newPerson 应该反映每个子方法中所做的所有更改吧?
为什么不将这些过程方法作为 CVPersonModel 的一部分并在对象本身上调用它们?如果您使用同一对象的变异实例设置该对象的实例,最好只使用增变器方法。
所以它会像这样:
[newPerson processFaceWithImage:preProcessedImg];