if ( [[[UIDevice currentDevice] systemVersion] doubleValue ] >= 4.0 ) { MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init]; if([MFMessageComposeViewController canSendText]) { controller.body = str; controller.recipients = nil; controller.messageComposeDelegate = self; [self presentViewController:controller animated:YES completion:nil]; } }
Убрать Deprecated сообщение
if ( [[[UIDevice currentDevice] systemVersion] doubleValue] < 3.2 ) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated" [[userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardEndFrame]; #pragma GCC diagnostic pop else [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];
Движки для игр
Резервная копия Keychain
Файлы связки ключей (пароли и сертификаты) находятся в папке:
/Users/[ИМЯ_ЮЗЕРА]/Library/Keychains/login.keychain
Symbol not found: _objc_setProperty_nonatomic_cop
Это грёбаная злостная скрытая ошибка выявилась после публикации проекта в AppStore, стоила кучи минусов приложению.
Появляется она если компилировать проект на iOS 6 SDK и Deployment target 5.x .
Решается как оказалась очень просто — надо установить везде где необходимо Deployment target на «iOS 4.3»
Библиотеки для картографии под iOS
Ох уж эта Your branch is ahead of ‘origin/master’ by X commit…
Эта ошибка бывает просто выводит.
Много разных пречитал способов решения, к примеру:
http://www.freewayprojects.com/2011/11/solving-the-your-branch-is-ahead-of-originmaster-by-x-commits-issue-after-pulling-using-git/
Но все оказалось проще: git commit -a -m «.»
Упаковка структур
Objective-C:
#include <inttypes.h> #include <stddef.h> #pragma pack(push,1) typedef struc { TAreaPoint point; uint8_t pointType; char name[8]; } #pragma pack(pop)
Delphi:
type TRoutePoint = packed record point: TAreaPoint; pointType: Byte; name: array[1..5] of AnsiChar; end;
Переименование столбца в C#
dataTable.Columns["OldName"].ColumnName = "NewName";
Странное поведение функции
NSString *dbReadString(FILE *f) { char cBuf[256]; NSString *result = nil; int len = 0; fread(&len, 1, 1, f); if ( len > 0 ) { if ( len > 255 ) len = 255; fread(&cBuf, len, 1, f); cBuf[ len ] = 0; result = [[NSString alloc] initWithBytes:cBuf length:len encoding:NSWindowsCP1251StringEncoding]; NSString *result2 = [[NSString alloc] initWithCString: cBuf encoding: NSWindowsCP1251StringEncoding]; if ([result compare:result2] != NSOrderedSame) NSLog(@"/%@/ ! = /%@/", result, result2); } return result; }
NSLog иногда срабатывает.
Upd: Если встречается буфер с содержимым к примеру: ‘AB’\0’C’ (при длине строки в 4 символа), то при использовании инициализатора initWithBytes: length: encoding: нулевые символы тоже попадают в строку.
Это приводит к непредсказуемым результатом в работе с этой строкой.
Так что лучше использовать initWithCString.