Skip to content

Instantly share code, notes, and snippets.

View m1entus's full-sized avatar

Michał Zaborowski m1entus

View GitHub Profile
@m1entus
m1entus / gist:9666239
Last active August 29, 2015 13:57
Testing asynchronous call.md
// Set the flag for a block completion handler
#define FLSTART() __block dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);

// Set the flag to stop the loop
#define FLEND() dispatch_semaphore_signal(semaphore);

// Wait and loop until flag is set
#define FLWAIT() WAITWHILE(dispatch_semaphore_wait(semaphore, DISPATCH_TIME_NOW))
@implementation NSDictionary (QuickLook)
- (id)debugQuickLookObject
{
NSData *data = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:nil];
NSString *JSONString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSString *embedHTML = [NSString stringWithFormat:@"<html><head></head><body><pre>%@</pre></body></html>",JSONString];
@m1entus
m1entus / sortBtProperty.swift
Created July 23, 2014 10:00
Swift generic function sorting by object property
func sortByProperty<T: NSObject>(array: [T], property: String, ascending: Bool) -> [T] {
var sortedBooks = [T](array)
sortedBooks.sort { element1, element2 in
var value1: AnyObject! = ""
var value2: AnyObject! = ""
if element1.respondsToSelector(Selector(property)) {
value1 = element1.valueForKey(property)
@m1entus
m1entus / objc_setAssociatedObject.swift
Last active August 29, 2015 14:04
objc_setAssociatedObject.swift
var imageRequestOperationKey = "imageRequestOperationPointer"
let imageRequestOperationPointer = UnsafePointer<String>(COpaquePointer(&imageRequestOperationKey))
extension UIImageView {
func bw_imageRequestOperation() -> AFHTTPRequestOperation {
return objc_getAssociatedObject(self, imageRequestOperationPointer) as AFHTTPRequestOperation
}
func bw_setImageRequestOperation(operation :AFHTTPRequestOperation?) {
set -ex
[ "$ACTION" = build ] || exit 0
[ "$BUILD_VARIANTS" = "normal" ] || exit 0
[ "$CONFIGURATION" = "Release" ] || exit 0
dir="$TEMP_FILES_DIR/disk"
dmg="$HOME/Desktop/$PROJECT_NAME.dmg"
rm -rf "$dir"

CocoaPods + Xcode Continuous Integration

Script:

cd ${SRCROOT}
if [ -e "Pods" ]
then
pod install
else
touch Pods
@m1entus
m1entus / gist:e52386c9b3d1ff7307d9
Last active December 3, 2015 09:54 — forked from zetachang/gist:4111314
Instruction on adding a Acknowledgements Settings.bundle
  • To add Settings.bundle in Xcode. Command N and in Resource, choose Settings Bundle .
  • Open Root.plist in source code, paste the code below to replace it,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PreferenceSpecifiers</key>
	

Question

How to implement a UITableView with a separator line like this:

doubly separator line

Usually, you can only set the separatorLine property of a UITableView with to single line or single line etched. Sometimes, it is not enough. So, how to implement a separator line like this?

Answer

#!/usr/bin/env bash
rm -rf "${HOME}/Library/Caches/CocoaPods"
rm -rf "`pwd`/Pods/"
pod update
@m1entus
m1entus / aes128.m
Created September 19, 2014 12:42
AES128 endryption
- (NSData *)AES128EncryptWithData:(NSData *)data {
NSUInteger dataLength = [self length];
//See the doc: For block ciphers, the output size will always be less than or
//equal to the input size plus the size of one block.
//That's why we need to add the size of one block here
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);