Skip to content

Instantly share code, notes, and snippets.

View kharmabum's full-sized avatar
💭
🧀

Juan-Carlos Foust kharmabum

💭
🧀
View GitHub Profile

Objective-C Coding Convention and Best Practices

Most of these guidelines are to match Apple's documentation and community-accepted best practices. Some are derived some personal preference. This document aims to set a standard way of doing things so everyone can do things the same way. If there is something you are not particularly fond of, it is encouraged to do it anyway to be consistent with everyone else.

This document is mainly targeted toward iOS development, but definitely applies to Mac as well.

Operators

NSString *foo = @"bar";
@ridiculousfish
ridiculousfish / SafeSet.m
Created June 26, 2012 09:22
A thread safe set written in Objective-C
#import <Foundation/Foundation.h>
@interface SafeSet : NSObject {
NSMutableSet *set;
dispatch_queue_t queue;
}
@end
@implementation SafeSet
@mmorey
mmorey / Location from NOAA String
Created February 1, 2013 03:22
Converts NOAA string into a CLLocationCoordinate2D coordinate
- (CLLocationCoordinate2D)locationFromString:(NSString *)locationString{
CLLocationCoordinate2D coordinate;
// Extract individual components
NSMutableArray *locationColumns = [NSMutableArray arrayWithArray:
[locationString componentsSeparatedByCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]]];
// Remove empty objects

Build your own private, encrypted, open-source Dropbox-esque sync folder

Prerequisites:

  • One or more clients running a UNIX-like OS. Examples are given for Ubuntu 12.04 LTS, although all software components are available for other platforms as well (e.g. OS X). YMMV
  • A cheap Ubuntu 12.04 VPS with storage. I recommend Backupsy, they offer 250GB storage for $5/month. Ask Google for coupon codes.

Software components used:

  • Unison for file synchronization
  • EncFS for folder encryption
@kharmabum
kharmabum / sf.md
Last active June 26, 2019 17:33
Welcome to SF

Abbreviations

  • Downtown = ~north of Market St
  • Richmond = ~north of Golden Gate Park
  • Mission = south of Market St to the West
  • SOMA - south of Market St to the East.

Food

@steipete
steipete / ios-xcode-device-support.sh
Last active May 11, 2025 13:30
Using iOS 15 devices with Xcode 12.5 (instead of Xcode 13)
# The trick is to link the DeviceSupport folder from the beta to the stable version.
# sudo needed if you run the Mac App Store version. Always download the dmg instead... you'll thank me later :)
# Support iOS 15 devices (Xcode 13.0) with Xcode 12.5:
sudo ln -s /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/15.0 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
# Then restart Xcode and reconnect your devices. You will need to do that for every beta of future iOS versions
# (A similar approach works for older versions too, just change the version number after DeviceSupport)
@powhu
powhu / GIF2MP4.swift
Last active December 10, 2024 20:44
Swift 5.0 GIF to MP4
//
// GIF2MP4.swift
//
// Created by PowHu Yang on 2020/4/24.
// Copyright © 2020 PowHu Yang. All rights reserved.
//
/* How to use
let data = try! Data(contentsOf: Bundle.main.url(forResource: "gif", withExtension: "gif")!)
let tempUrl = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("temp.mp4")
@marinbenc
marinbenc / DebouncedAction.swift
Last active July 28, 2017 21:33
An action that will be debounced after a certain time in Swift.
import Foundation
/// An action that will get executed after a certain amount of
/// time, if the object is still alive. If the object gets
/// deinited before the provided time, the action will never
/// get executed.
class DebouncedAction {
private let action: ()-> Void
private var onCancel: (()-> Void)?
@chourobin
chourobin / 0-bridging-react-native-cheatsheet.md
Last active July 7, 2025 21:06
React Native Bridging Cheatsheet