Skip to content

Instantly share code, notes, and snippets.


Karol S. Mazur ksm

View GitHub Profile
View ReusableCellExample.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:REUSABLE_CELL_ID];
UILabel *label = (UILabel *)[cell viewWithTag:VIEW_TAG];
Model *someModel = [self getModelFromIndexPath:indexPath];
// `takeUntil:` makes the RACObserve() signal complete (and thus breaks the subscription)
// when the cell is recycled.
View gist:3526cac1682c7d165c42
Provides the ability to verify key paths at compile time.
If "keyPath" does not exist, a compile-time error will be generated.
// Verifies "isFinished" exists on "operation".
NSString *key = SQKeyPath(operation, isFinished);
// Verifies "isFinished" exists on self.
ksm / DrawView.h
Created Feb 14, 2012
DrawView with a block for drawRect: an alternative to subclassing UIView for simple drawing operations
View DrawView.h
Copied and pasted from David Hamrick's blog.
typedef void(^DrawView_DrawBlock)(UIView* v,CGContextRef context);
@interface DrawView : UIView
ksm / gist:1830844
Created Feb 14, 2012
CoreGraphics UITableView iOS5 bevel effect function
View gist:1830844
Copied and pasted from Tim Oliver's blog.
void DrawInsetBeveledRoundedRect(CGContextRef context, CGRect rect, CGFloat radius, UIColor *fillColor) {
//contract the bounds of the rectangle in to account for the stroke
CGRect drawRect = CGRectInset(rect, 1.0f, 1.0f);
//contract the height by 1 to account for the white bevel at the bottom
ksm / debug.h
Created Feb 20, 2012
Xcode: how to debug the right way
View debug.h
// via @_bejo
// then just add a DEBUG = 1 to debug target in xcode
#ifdef DEBUG
#define DebugLog( s, ... ) NSLog( @"<%@:(%d)> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#define DebugLog( s, ... )
ksm / gist:1869980
Created Feb 20, 2012
CALayer masking in drawLayer:inContext (to avoid layer.cornerRadius performance hit)
View gist:1869980
Source: Apple Developer - Understanding iOS View Compositing
Note: setting view.layer.cornerRadius and .masksToBounds
sends the view for rending to an offscreen buffer.
We want to avoid unnecessary rendering passes.
Let the context do the work.
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
CGRect rect = layer.bounds;
ksm / gist:2152929
Created Mar 21, 2012
KVO granular notifications on NSMutableArray
View gist:2152929
Thanks to @_bejo
- (void)_insertGlobalRoomMessage:(id)msg atIndex:(NSUInteger)index
NSIndexSet *changeSet = [NSIndexSet indexSetWithIndex:index];
[self willChange:NSKeyValueChangeInsertion valuesAtIndexes:changeSet forKey:@"globalRoomMessages"];
[(NSMutableArray *)self.globalRoomMessages insertObject:msg atIndex:index];
[self didChange:NSKeyValueChangeInsertion valuesAtIndexes:changeSet forKey:@"globalRoomMessages"];
ksm / .gitignore
Created May 16, 2012 — forked from kluivers/.gitignore
.gitignore for Xcode projects
View .gitignore
# .gitignore in use by Joris Kluivers
# Latest version:
# Xcode
ksm / gist:3689409
Created Sep 10, 2012
Enum with Fixed Underlying Type
View gist:3689409
Enum with Fixed Underlying Type
New with Xcode 4.4
Via WWDC2012 Session 405 - Modern Objective-C
Results in better code completion and stronger type checking.
Use -Wconversion compiler flag to check for enum type errors.
-Wswitch for checking if switch statement is fully handled for enum.
ksm / gist:3689574
Created Sep 10, 2012
Constant literal container workaround
View gist:3689574
Source: WWDC2012 Modern Objective-C talk
How to get a constant literal container to work.
@implementation MyClass
static NSArray *thePlanets;
+ (void)initialize {