Хм. Ну это дело привычки, мне вот армовые инструкции «на глаз» читать куда как легче, чем x86_64. При этом специфика рантайма в виде objc_msgSend позволяет получать больше информации о том, каикие методы как и где вызываются простым путем.
> Это именно посылка сообщения, а не вызов метода, поскольку если вызвать несуществующий метод, мы не получим никаких ошибок на этапе компиляции, только во время выполнения
Ну раз уж упомянули clang3 и arc, почему не упомянули, что clang3 на несуществующие методы умеет давать ошибки компиляции?
Подскажите, а в чем разница профита между сабжем и макрофильтрами для конкретно макросъемки? Кольца фокусное расстояние увеличивают, фильтры наоборот уменьшают, но как-то ни у кого на руках макрофильтра не видел что б понять как выглядит результат.
Альтернативный вариант «зачем это» – насколько я знаю, в данный момент эппл использует базы google для «прицеливания» по gsm (и cdma?), и базы skyhook (вот это уже точно уверен) – для wifi.
Возможно, такие сканы потом аггрегируются для получения эпплом своей, независимой базы, с координатами gsm/cdma/wifi объектов.
Зачем это все? Я так думаю, это кеш координат для CoreLocation (почти холодный старт). При чем, в работе он явно использует трекинг/сверку по сети, ибо набор точек на прямой Киев-Москва резко обрывается на границе и появляется уже в дефолт-сити (на местной симке), в роуминге iOS BS-ки не записывает, хотя технических проблем вроде и нет.
Другой вопрос что да, записи такие в доступной большинству на чтение базе хранить может бы и не очень Ъ.
Кроме того в 1P можно хранить лицензионные данные для ПО. Ну и хранение «абстрактных» файлов, например приватных ключей.
Ну раз уж упомянули clang3 и arc, почему не упомянули, что clang3 на несуществующие методы умеет давать ошибки компиляции?
И из современного – www.youtube.com/watch?v=X1ciUGjZZf4 (в исполнении вокалоида)
Возможно, такие сканы потом аггрегируются для получения эпплом своей, независимой базы, с координатами gsm/cdma/wifi объектов.
.schema
CREATE TABLE CdmaCellLocation (MCC INTEGER, SID INTEGER, NID INTEGER, BSID INTEGER, ZONEID INTEGER, BANDCLASS INTEGER, CHANNEL INTEGER, PNOFFSET INTEGER, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, PRIMARY KEY (MCC, SID, NID, BSID, ZONEID, BANDCLASS, CHANNEL, PNOFFSET));
CREATE VIRTUAL TABLE CdmaCellLocationBoxes USING rtree(ROWID, MinimumLatitude, MaximumLatitude, MinimumLongitude, MaximumLongitude);
CREATE TABLE "CdmaCellLocationBoxes_node"(nodeno INTEGER PRIMARY KEY, data BLOB);
CREATE TABLE "CdmaCellLocationBoxes_parent"(nodeno INTEGER PRIMARY KEY, parentnode INTEGER);
CREATE TABLE "CdmaCellLocationBoxes_rowid"(rowid INTEGER PRIMARY KEY, nodeno INTEGER);
CREATE TABLE CdmaCellLocationCounts (Count INTEGER);
CREATE TABLE CdmaCellLocationHarvest (MCC INTEGER, MNC INTEGER, SID INTEGER, NID INTEGER, BSID INTEGER, BSLatitude FLOAT, BSLongitude FLOAT, ZoneID INTEGER, SectorID TEXT, SectorLatitude FLOAT, SectorLongitude FLOAT, BandClass INTEGER, RAT INTEGER, CellType INTEGER, PNOffset INTEGER, Channel INTEGER, Operator TEXT, BundleId TEXT, LTMOffset INTEGER, DayLightSavings INTEGER, DerivedMcc TEXT, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, PRIMARY KEY (MCC, MNC, SID, NID, BSID, Timestamp));
CREATE TABLE CdmaCellLocationHarvestCounts (Count INTEGER);
CREATE TABLE CdmaCellLocationLocal (MCC INTEGER, SID INTEGER, NID INTEGER, BSID INTEGER, ZONEID INTEGER, BANDCLASS INTEGER, CHANNEL INTEGER, PNOFFSET INTEGER, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, PRIMARY KEY (MCC, SID, NID, BSID, ZONEID, BANDCLASS, CHANNEL, PNOFFSET));
CREATE VIRTUAL TABLE CdmaCellLocationLocalBoxes USING rtree(ROWID, MinimumLatitude, MaximumLatitude, MinimumLongitude, MaximumLongitude);
CREATE TABLE "CdmaCellLocationLocalBoxes_node"(nodeno INTEGER PRIMARY KEY, data BLOB);
CREATE TABLE "CdmaCellLocationLocalBoxes_parent"(nodeno INTEGER PRIMARY KEY, parentnode INTEGER);
CREATE TABLE "CdmaCellLocationLocalBoxes_rowid"(rowid INTEGER PRIMARY KEY, nodeno INTEGER);
CREATE TABLE CdmaCellLocationLocalCounts (Count INTEGER);
CREATE TABLE Cell (Timestamp FLOAT, MCC INTEGER, MNC INTEGER, LAC INTEGER, CI INTEGER, PRIMARY KEY (Timestamp, MCC, MNC, LAC, CI));
CREATE TABLE CellLocation (MCC INTEGER, MNC INTEGER, LAC INTEGER, CI INTEGER, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, PRIMARY KEY (MCC, MNC, LAC, CI));
CREATE VIRTUAL TABLE CellLocationBoxes USING rtree(ROWID, MinimumLatitude, MaximumLatitude, MinimumLongitude, MaximumLongitude);
CREATE TABLE "CellLocationBoxes_node"(nodeno INTEGER PRIMARY KEY, data BLOB);
CREATE TABLE "CellLocationBoxes_parent"(nodeno INTEGER PRIMARY KEY, parentnode INTEGER);
CREATE TABLE "CellLocationBoxes_rowid"(rowid INTEGER PRIMARY KEY, nodeno INTEGER);
CREATE TABLE CellLocationCounts (Count INTEGER);
CREATE TABLE CellLocationHarvest (MCC INTEGER, MNC INTEGER, LAC INTEGER, CI INTEGER, RSSI INTEGER, ARFCN INTEGER, PSC INTEGER, RSCP INTEGER, ECN0 INTEGER, Operator TEXT, Transmit INTEGER, BundleId TEXT, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, PRIMARY KEY (MCC, MNC, LAC, CI, Timestamp));
CREATE TABLE CellLocationHarvestCounts (Count INTEGER);
CREATE TABLE CellLocationLocal (MCC INTEGER, MNC INTEGER, LAC INTEGER, CI INTEGER, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, PRIMARY KEY (MCC, MNC, LAC, CI));
CREATE VIRTUAL TABLE CellLocationLocalBoxes USING rtree(ROWID, MinimumLatitude, MaximumLatitude, MinimumLongitude, MaximumLongitude);
CREATE TABLE "CellLocationLocalBoxes_node"(nodeno INTEGER PRIMARY KEY, data BLOB);
CREATE TABLE "CellLocationLocalBoxes_parent"(nodeno INTEGER PRIMARY KEY, parentnode INTEGER);
CREATE TABLE "CellLocationLocalBoxes_rowid"(rowid INTEGER PRIMARY KEY, nodeno INTEGER);
CREATE TABLE CellLocationLocalCounts (Count INTEGER);
CREATE TABLE CompassCalibration (Timestamp FLOAT, MagneticX FLOAT, MagneticY FLOAT, MagneticZ FLOAT, BiasX FLOAT, BiasY FLOAT, BiasZ FLOAT, Level INTEGER, Magnitude FLOAT, Inclination FLOAT);
CREATE TABLE Fences (BundleId TEXT, Name TEXT, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, Distance FLOAT, DesiredAccuracy FLOAT, SetupComplete INTEGER, LastStatus INTEGER, PRIMARY KEY (BundleId, Name));
CREATE TABLE Location (Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Lifespan FLOAT, PRIMARY KEY (Timestamp));
CREATE TABLE LocationHarvest (Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, TripId TEXT, Context INTEGER, PRIMARY KEY (Timestamp));
CREATE TABLE LocationHarvestCounts (Count INTEGER);
CREATE TABLE TableInfo (TableName TEXT, SoftwareVersion TEXT, SerialNumber TEXT, PRIMARY KEY (TableName));
CREATE TABLE Wifi (Timestamp FLOAT, MAC TEXT, RSSI INTEGER, PRIMARY KEY (Timestamp, MAC));
CREATE TABLE WifiLocation (MAC TEXT, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, PRIMARY KEY (MAC));
CREATE TABLE WifiLocationCounts (Count INTEGER);
CREATE TABLE WifiLocationHarvest (MAC TEXT, Channel INTEGER, Hidden INTEGER, RSSI INTEGER, Age FLOAT, BundleId TEXT, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER);
CREATE TABLE WifiLocationHarvestCounts (Count INTEGER);
CREATE INDEX WifiLocationHarvestIndex ON WifiLocationHarvest (MAC);
... тут было много триггеров ...
Из ключевых таблиц, три:
CREATE TABLE CellLocation (MCC INTEGER, MNC INTEGER, LAC INTEGER, CI INTEGER, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, PRIMARY KEY (MCC, MNC, LAC, CI));
Собирает MMC/MNC/LAC/CI для BS-ки (4 числа, которые могут ее однозначно идентифицировать, как я понимаю)
CREATE TABLE WifiLocation (MAC TEXT, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, PRIMARY KEY (MAC));
MAC-адреса замеченных wifi точек
CREATE TABLE CdmaCellLocation (MCC INTEGER, SID INTEGER, NID INTEGER, BSID INTEGER, ZONEID INTEGER, BANDCLASS INTEGER, CHANNEL INTEGER, PNOFFSET INTEGER, Timestamp FLOAT, Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT, Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT, Confidence INTEGER, PRIMARY KEY (MCC, SID, NID, BSID, ZONEID, BANDCLASS, CHANNEL, PNOFFSET));
Аналогично первой таблице, но для Cdma-based ифонов/ипадов.
Зачем это все? Я так думаю, это кеш координат для CoreLocation (почти холодный старт). При чем, в работе он явно использует трекинг/сверку по сети, ибо набор точек на прямой Киев-Москва резко обрывается на границе и появляется уже в дефолт-сити (на местной симке), в роуминге iOS BS-ки не записывает, хотя технических проблем вроде и нет.
Другой вопрос что да, записи такие в доступной большинству на чтение базе хранить может бы и не очень Ъ.