Good question. The correct way to create a new object instance is with Dim + Initialize.
It is true that in some cases it is enough to only call Initialize (in cases where the object is implemented as an object wrapper).
The example in the video is correct.
If you try this code in B4i:
Dim m As Map
Dim list As List
list.Initialize
For i = 1 To 10
m.Initialize
m.Put(i, i)
list.Add(m)
Next
Log(list)
The output is:
Application_Start
NSMapTable {
[6] 10 -> 10
}
NSMapTable {
[6] 10 -> 10
}
NSMapTable {
[6] 10 -> 10
}
NSMapTable {
[6] 10 -> 10
}
NSMapTable {
[6] 10 -> 10
}
NSMapTable {
[6] 10 -> 10
}
NSMapTable {
[6] 10 -> 10
}
NSMapTable {
[6] 10 -> 10
}
NSMapTable {
[6] 10 -> 10
}
NSMapTable {
[6] 10 -> 10
}
Application_Active
As you can see all items point to the same map.
Correct code:
Dim list As List
list.Initialize
For i = 1 To 10
Dim m As Map
m.Initialize
m.Put(i, i)
list.Add(m)
Next
In B4i Map is not a wrapper object.