For循环与new对象
错误示例:
/// <summary>
/// 任务列表
/// </summary>
private void LoadTaskCell(QueryUpsellEmTaskReply replay)
{
for (int i = 0; i < replay.mainTasks.Count; i++)
{
//低级错误, new对象放在了循环里面。 new了n次!
List<UserTask> newMainTasksFinished = new List<UserTask>();
List<UserTask> newMainTasks = new List<UserTask>();
if(replay.mainTasks[i].status == UserTask.STATUS.STATUS_FINISHED)
{
newMainTasksFinished.Add(replay.mainTasks[i]);
}
else
{
newMainTasks.Add(replay.mainTasks[i]);
}
}
newMainTasks.AddRange(newMainTasksFinished);
Debug.Log("返信原任务列表长度"+replay.mainTasks.Count);
Debug.Log("排序后的新任务列表长度"+newMainTasks.Count);
//Debug.Log("排序后的新任务列表最后一个元素序号: "+newMainTasks.Last().line);
for (int i = 0; i <newMainTasks.Count; i++)
{
GameObject taskCell = (GameObject)Instantiate(Trans_RewardCell.gameObject, Trans_Content);
taskCell.name = "task" + i;
Debug.Log("单个任务: " + taskCell.name);
taskCell.SetActive(true);
UIHCtoEMcell item = taskCell.GetComponent<UIHCtoEMcell>();
item.InitUI();
item.SetCellData( newMainTasks[i]);
}
}