This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
typedef NS_ENUM(NSInteger, kErrorCode) { | |
kErrorCodeInternal = 431432, | |
}; | |
//! generate error and log it. | |
extern NSError *pixle_NSErrorMake(NSString *message, NSUInteger code, NSDictionary *aUserInfo, SEL selector); | |
#define AssertTrueOrReturnBlock(condition, block) do{ NSAssert((condition), @"Invalid condition not satisfying: %s", #condition);\ | |
if(!(condition)) { block(pixle_NSErrorMake([NSString stringWithFormat:@"Invalid condition not satisfying: %s", #condition], kErrorCodeInternal, nil, _cmd)); return;} }while(0) | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-W | |
-Wextra | |
-Wmissing-field-initializers | |
-Wignored-qualifiers | |
-Winitializer-overrides | |
-Wsemicolon-before-method-body | |
-Wmissing-method-return-type | |
-Wsign-compare | |
-Wunused-parameter | |
-W#pragma-messages |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This code demonstrates -hash collision on NSString. Two strings have the same | |
// hash when the first, center, and last 32 chars are identical. The other chars | |
// don't matter at all. | |
// | |
// I had to find this out the hard way when loading images from cache while | |
// using the url string hash as the cache key. Unfortunately the urls were all | |
// gravatar urls, thus first 32 chars were identical. Further, all urls also had | |
// a fallback image url appended as query which covered the 32 | |
// center and end chars. The varying part was between the start and center parts | |
// and thus the hash was identical for all urls. |