Какие методы категории Вы используете для создания Какао, программирующего легче?

В большинстве браузеров это будет работать:

div.centre {
  width: 200px;
  display: block;
  background-color: #eee;
  margin-left: auto;
  margin-right: auto;
}
<div class="centre">Some Text</div>

В IE6 необходимо будет добавить другого внешнего div:

div.layout {
  text-align: center;
}

div.centre {
  text-align: left;
  width: 200px;
  background-color: #eee;
  display: block;
  margin-left: auto;
  margin-right: auto;
}
<div class="layout">
  <div class="centre">Some Text</div>
</div>
14
задан e.James 27 August 2009 в 17:49
поделиться

4 ответа

I've really been loving Andy Matuschak's "KVO+Blocks" category on NSObject. (Yes, it adds some new classes internally as implementation details, but the end result is just a category on NSObject). It lets you provide a block to be executed when a KVO-conforming value changes rather than having to handle every KVO observation in the observeValueForKeyPath:ofObject:change:context: method.

5
ответ дан 1 December 2019 в 15:02
поделиться

Регулярные выражения с RegexKitLite . Скачать @ RegexKitLite-3.1.tar.bz2

3
ответ дан 1 December 2019 в 15:02
поделиться

Категория, которая добавляет хеширование md5 / sha1 в NSString. NSData one похож.

#define COMMON_DIGEST_FOR_OPENSSL
#import <CommonCrypto/CommonDigest.h>


@implementation NSString(GNExtensions)

    - (NSString*)
    hashMD5
    {
        NSData* data = [self dataUsingEncoding: NSUTF8StringEncoding allowLossyConversion: NO];

        unsigned char hashingBuffer[16];
        char outputBuffer[32];

        CC_MD5([data bytes], [data length], hashingBuffer);

        for(int index = 0; index < 16; index++)
        {
            sprintf(&outputBuffer[2 * index], "%02x", hashingBuffer[index]);
        }

        return([NSString stringWithCString: outputBuffer length: 32]);
    }


    - (NSString*)
    hashSHA1
    {
        NSData* data = [self dataUsingEncoding: NSUTF8StringEncoding allowLossyConversion: NO];

        unsigned char hashingBuffer[20];
        char outputBuffer[40];

        CC_SHA1([data bytes], [data length], hashingBuffer);

        for(int index = 0; index < 20; index++)
        { 
            sprintf(&outputBuffer[2 * index], "%02x", hashingBuffer[index]);
        }

        return([NSString stringWithCString: outputBuffer length: 40]);
    }


@end
2
ответ дан 1 December 2019 в 15:02
поделиться

У меня есть несколько отличных методов для NSDate. Это говорит само за себя:

-(BOOL)isOnTheSameDayAsDate:(NSDate *)date {

    NSCalendar *cal = [NSCalendar currentCalendar];
    NSDateComponents *selfComponents = [cal components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit 
                                             fromDate:self];

    NSDateComponents *dateComponents = [cal components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit 
                                              fromDate:date];

    return (([selfComponents day] == [dateComponents day]) &&
            ([selfComponents month] == [dateComponents month]) && 
            ([selfComponents year] == [dateComponents year]));

}

Использование:

if ([aDate isOnTheSameDayAsDate:anotherDate]) { ... }

Это обеспечивает метод для простого получения дат, например «9 утра накануне»:

-(NSDate *)dateWithDayDelta:(NSInteger)daysBeforeOrAfter atHour:(NSUInteger)hour minute:(NSUInteger)minute second:(NSUInteger)second {

    NSDate *date = [self addTimeInterval:(24 * 60 * 60) * daysBeforeOrAfter];
    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateComponents *comps = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit | NSHourCalendarUnit |         
                                                   NSMinuteCalendarUnit | NSSecondCalendarUnit 
                                      fromDate:date];

    [comps setHour:hour];
    [comps setMinute:minute];
    [comps setSecond:second];

    return [calendar dateFromComponents:comps];
}

Использование:

// We want 9am yesterday
NSDate *nineAmYesterday = [[NSDate date] dateWithDayDelta:-1 
                                                   atHour:9 
                                                   minute:0 
                                                   second:0];
1
ответ дан 1 December 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: