// если уже была поездка
// Подписываемся на события клавиатуры
// Подписываемся на события клавиатуры
// логотип в уголке экрана
// начало клика по кнопке громкости
и т.д.
- (NSArray *)timelineRecordsFromEvents:(NSArray *)events { | |
WOTimelineRecord *lastRecord = [self.items lastObject]; | |
WOTimeLineSessionGroup *lastSessionGroup = (lastRecord.type == WOTimelineRecordTypeGroupedAuthEvents) ? lastRecord.item : nil; | |
NSMutableArray *newRecords = [NSMutableArray new]; | |
NSMutableArray *sessionEvents = [NSMutableArray new]; | |
for (int i = 0; i < [events count]; i++) { | |
WOTimeLineEvent *event = events[i]; | |
@implementation UIWindow (WLOAnalytics) | |
+(void)load{ | |
Class class = [UIWindow class]; | |
SEL swizzleIt = @selector(sendEvent:); | |
SEL swizzleTo = @selector(WLORuntime_sendEvent:); | |
Method methodIt = class_getClassMethod(class, swizzleIt); | |
Method methodTo = class_getClassMethod(class, swizzleTo); | |
method_exchangeImplementations(methodIt, methodTo); |
if (!atomic) { | |
oldValue = *slot; | |
*slot = newValue; | |
} else { | |
spin_lock_t *slotlock = &PropertyLocks[GOODHASH(slot)]; | |
_spin_lock(slotlock); | |
oldValue = *slot; | |
*slot = newValue; | |
_spin_unlock(slotlock); | |
} |
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { | |
NSObject* ob = [NSObject new]; | |
dispatch_async(dispatch_get_main_queue(), ^{ | |
NSLog(@"A: %d",[ob retainCount]); | |
dispatch_async(dispatch_get_main_queue(), ^{ | |
NSLog(@"B: %d",[ob retainCount]); | |
}); | |
NSLog(@"C: %d",[ob retainCount]); | |
}); |
union u_t { | |
int a; | |
short b; | |
char c; | |
} __attribute__((__transparent_union__)) U; |
NSFastEnumerationState traitsListEnumerationState; | |
id traitsListObjectsPtr; | |
NSUInteger traitStorageListsCount = [traitStorageLists countByEnumeratingWithState:&traitsListEnumerationState objects:&traitsListObjectsPtr count:16LL]; | |
int* v77 = 0LL; | |
long v28 = 0LL; | |
if (traitStorageListsCount){ | |
v28 = *v77; | |
do { | |
for(size_t i = 0; i< traitStorageListsCount; ++i){ | |
/* if (*v77 != v28){ |
#EXTM3U url-tvg=http://help.telecom.by/_files/TelecomTV/TelecomTVepg.zip,http://help.telecom.by/_files/TelecomTV/icons.zip | |
#EXTINF:-1 aspect-ratio=4:3 tvg-name="Беларусь 1" group-title="Социальный пакет", Беларусь 1 (тест) | |
udp://@233.81.116.1:1234 | |
#EXTINF:-1 aspect-ratio=4:3 tvg-name="Беларусь 2", Беларусь 2 (тест) | |
udp://@233.81.116.2:1234 | |
#EXTINF:-1 aspect-ratio=4:3 tvg-name=“Русская ночь“, Русская ночь (тест) | |
udp://@233.81.116.57:1234 | |
#EXTINF:-1 aspect-ratio=4:3 tvg-name="Беларусь 3", Беларусь 3 (тест) | |
udp://@233.81.116.7:1234 |
{ | |
"machineId" : 18, | |
"questionnaireData" : { | |
"1-3 When do you plan to place an order" : "May 14, 2015", | |
"3-2 What is the platen configuration required?" : "SPI", | |
"3-7 How many injection units do you require per machine?" : "Single 1", | |
"3-10 Will you be running regrind and\/or filled material?" : "Regrind materials: YES, Filled materials: YES", | |
"1-1 What is the account\/customer category?" : "Returning", | |
"5-2 Size" : "small\/high shot volume", | |
"2-5 What cycle overall times are expected or targeted for the machine?" : "min: 1\nmax:1", |
/* Basic Messaging Primitives | |
* | |
* On some architectures, use objc_msgSend_stret for some struct return types. | |
* On some architectures, use objc_msgSend_fpret for some float return types. | |
* On some architectures, use objc_msgSend_fp2ret for some float return types. | |
* | |
* These functions must be cast to an appropriate function pointer type | |
* before being called. | |
*/ | |
#if !OBJC_OLD_DISPATCH_PROTOTYPES |
// если уже была поездка
// Подписываемся на события клавиатуры
// Подписываемся на события клавиатуры
// логотип в уголке экрана
// начало клика по кнопке громкости
и т.д.