Skip to content

Instantly share code, notes, and snippets.

View ksoftllc's full-sized avatar

Chuck Krutsinger ksoftllc

  • KSoft, LLC
  • Denver, CO
View GitHub Profile
@ksoftllc
ksoftllc / Switcher.m
Last active December 8, 2017 00:49
Switch on NSString in Objective-C
//NOTE: split into 2 files
//Based on/inspired by this stackoverflow.com post: https://stackoverflow.com/a/10177956/1256015 by Graham Perks.
//------ Switcher.h
/**
Example usage:
@code
NSString * someString = @"Hearts";
@ksoftllc
ksoftllc / CreatePostViewController.swift
Last active November 27, 2018 03:23
Example of view controller registering itself with its presenter.
class CreatePostViewController: MainView {
var createPostPresenter: CreatePostPresenter! //injected before view loads
override func viewDidLoad() {
super.viewDidLoad()
// layout the view upon loading
createPostPresenter.registerView(self)
}
}
@ksoftllc
ksoftllc / CreatePostPresenter.swift
Last active November 27, 2018 03:21
Presenter registerView example
class CreatePostPresenter {
var createPostModel: CreatePostModel! //injected before registering view
func registerView(createPostView: CreatePostView) {
createPostModel.imageFor(imageUrl: createPostModel.currentRoleProfilePictureUrl)
.observeOn(MainScheduler.instance)
.bind(to: createPostView.posterImageBinder)
.disposed(by: bag)
@ksoftllc
ksoftllc / CreatePostPresenter.swift
Created November 27, 2018 03:34
Use local weak var to reference view
class CreatePostPresenter {
var createPostModel: CreatePostModel! //injected before registering view
func registerView(createPostView: CreatePostView) {
weak var view: CreatePostView! = createPostView
createPostModel.imageFor(imageUrl: createPostModel.currentRoleProfilePictureUrl)
.observeOn(MainScheduler.instance)
.bind(to: view.posterImageBinder)
.disposed(by: bag)
@ksoftllc
ksoftllc / CreatePostPresenter.swift
Last active November 27, 2018 03:46
Implicit strong reference when using function pointer.
class CreatePostPresenter {
var createPostModel: CreatePostModel! //injected before registering view
func registerView(createPostView: CreatePostView) {
weak var view: CreatePostView! = createPostView
view.createPostButtonTap
.throttle(0.1, scheduler: MainScheduler.instance)
.map { (view.postText, view.photo) }
@ksoftllc
ksoftllc / CreatePostPresenter.swift
Created November 27, 2018 03:50
using local variables to avoid capture lists
class CreatePostPresenter {
var createPostModel: CreatePostModel! //injected before registering view
func registerView(createPostView: CreatePostView) {
weak var view: CreatePostView! = createPostView
let model = createPostModel!
view.createPostButtonTap
.throttle(0.1, scheduler: MainScheduler.instance)
.map { (view.postText, view.photo) }
@ksoftllc
ksoftllc / CreatePostPresenter.swift
Created November 27, 2018 03:56
Avoiding strong reference implicitly created by func references.
class CreatePostPresenter {
var createPostModel: CreatePostModel! //injected before registering view
func registerView(createPostView: CreatePostView) {
weak var view: CreatePostView! = createPostView
let model = createPostModel!
view.createPostButtonTap
.throttle(0.1, scheduler: MainScheduler.instance)
.map { (view.postText, view.photo) }
import ReSwift
import RxSwift
import RxCocoa
func homeScreenViewModel(viewProfileTap: Observable<Void>,
playGamesTap: Observable<Void>,
logoutTap: Observable<Void>)
-> (username: Driver<Username>,
viewProfileDisposable: Disposable,
playGamesDisposable: Disposable,
@ksoftllc
ksoftllc / Deinit.swift
Created February 20, 2019 01:06
A print statement to document when a class instance is deallocated from memory
#if DEBUG
deinit {
print("\(String(describing: self)) deinit")
}
#endif
// SearchResultViewModel.swift
// RxExample
//
// Created by Krunoslav Zaher on 4/3/15.
// Modified by Chuck Krutsinger on 2/20/19.
//
// Copyright © 2015 Krunoslav Zaher. All rights reserved.
//
import RxSwift