Skip to content

Instantly share code, notes, and snippets.

View OdNairy's full-sized avatar

Roman Gardukevich OdNairy

View GitHub Profile
- (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);
@OdNairy
OdNairy / objc-accessors.mm
Created December 10, 2014 11:24
The real difference between atomic/nonatomic
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;
@OdNairy
OdNairy / decompiled
Last active August 29, 2015 14:15
Objective-c FOR-IN construction decompiled .
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",
@OdNairy
OdNairy / gist:ff7995f2ca6bb29f3bde
Last active August 29, 2015 14:21
objc/message.h
/* 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
@OdNairy
OdNairy / comments.md
Last active August 29, 2015 14:25
Euronews: No comments
// если уже была поездка
// Подписываемся на события клавиатуры
    // Подписываемся на события клавиатуры
// логотип в уголке экрана
// начало клика по кнопке громкости

и т.д.