Я знаю компании, которые пишут именно на c# под мобильники, используя кроссплатформенные библиотеки. По C# для андроида не подскажу. Но вы можете писать игры на unity, сейчас мега популярная тема. А в основном приложения пишут нативно на Java. Я не знаю стоит ли вам лезть в iOS.
Я стал изучать iOS, когда был достаточный опыт разработки по Android и опыт разработки на C++ ранее. По-этому больших трудностей я не испытывал. После iOS я пощупал Windows Phone, почитал C#, написал пару приложений. Интересно, но пока вглубь не полез, времени не хватает. Не стоит изучать одновременно две платформы. Можно, но не нужно =)
String uniqueID = UUID.randomUUID().toString().toUpperCase();
этот id заворачиваешь, к примеру, в SHA-1
потом делаешь контрольную сумму с полученной последовательности
и присоединяешь контрольную сумму к id
готово
на сервере отделяешь id от контрольной суммы и проверяешь
трудно сказать, что такое lesson, но вам написали, что вы количество строк в TableView берете из self.lesson.cards.count. А вставляете строку insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:[self.cards count]-1 inSection:0]] Вы добавили в cards элемент, стало из 3, а в lesson.cards, и indexPathForRow выходит за предел массива
я с такой проблемой столкнулся, когда наше приложение убивало стек активити и стартовало заново при запуске с иконки лаунчера. Мы сидели тестировали и гуглили. Выяснилось, что при создании нами иконки на лаунчер мы в интент не добавили необходимые флаги. Проставив их, запуск с ярлыка восстанавливал стек активити. По-этому я и говорю про кастомность. У меня в основном личные телефоны с дефолтными гугловскими лаунчерами аля Nexus, такой проблемы я практически не встречаю. Учитывая, что при уходе в бекграунд вьюхи приложения выгружаются из памяти, то стек активити это мизерная инфа для хранения состояния приложения. как-то так =)