When calling
[myCentralManager scanForPeriopheralsWithServices:myServices options:nil]
centralManager:didDiscoverPeripheral:error: is sometimes called two times for the same peripheral object; at least the object's address is identical. Is this normal behaviour?
Yes,
When the iOS device is actively scanning, it will send a "Scan request" to the peripheral it received the Advertising packet from.
First didDiscoverPeripheral() callback will be for the initial advertising packet. When the peripheral responds with the "Scan response", there will be a second callback, possibly with additional info in the advertising data which the peripheral sends in the scan response.
Usually (depending on what the peripheral sends), it is possible to not have some data such as peripheral name, additional service UUIDs, etc. until the second callback.
An important aside: This second packet is not guaranteed to be requested in passive scan mode (could be when your app is in the background), so it is important to make sure the primary service UUID your app is scanning for is contained in the first advertising packet (ADV_IND)