Дисклеймер: речь идёт об однопоточном коде, оставим ужасы параллельного исполнения за скобками. Также не рассматривается возможность overrelease.
Объект точно не ритейнится на время выполнения его метода, пруфы:
#!/bin/sh | |
if git status | grep -i 'HEAD detached' > /dev/null 2>&1; then | |
echo "You should not commit while in detached state, either create a new brach or checkout existing one before committing." | |
exit 1 | |
fi |
class ViewModel { | |
init() { | |
// accessing underlying subject: | |
$buttonTapped | |
.asObservable() | |
... | |
} | |
// look ma, no explicit subject property |
Дисклеймер: речь идёт об однопоточном коде, оставим ужасы параллельного исполнения за скобками. Также не рассматривается возможность overrelease.
Объект точно не ритейнится на время выполнения его метода, пруфы:
#import <Foundation/Foundation.h> | |
@interface Node: NSObject | |
@property (nonatomic, weak) Node *parent; | |
@property (nonatomic) NSArray *children; | |
@end | |
@implementation Node { |
import Foundation | |
class Child { | |
deinit { | |
print("Child.deinit") | |
} | |
var parent: Parent? | |
func removeFromParent() { |
class Cmake < Formula | |
desc "Cross-platform make" | |
homepage "https://www.cmake.org/" | |
url "https://cmake.org/files/v3.12/cmake-3.12.4.tar.gz" | |
sha256 "5255584bfd043eb717562cff8942d472f1c0e4679c4941d84baadaa9b28e3194" | |
head "https://cmake.org/cmake.git" | |
bottle do | |
cellar :any_skip_relocation | |
sha256 "7bcd5ae043d2a6fd5983b026ccdc70b7594e0dbe9de4d367cfcead7edf3c8596" => :mojave |
import Swift | |
func LCS<T: Equatable>(a: [T], b: [T]) -> [[UInt]] { | |
let rows = a.count + 1 | |
let cols = b.count + 1 | |
var matrix: [[UInt]] = Array(count: rows, repeatedValue: Array(count: cols, repeatedValue: 0)) | |
for i in 1..<rows { |
protocol RemoteAPIDelegate: class { | |
func remoteAPIDidLoadPosts(_ posts: NSArray) | |
} | |
class RemoteAPI { | |
weak var delegate: RemoteAPIDelegate? | |
func loadPosts() { |
protocol ReachabilityDelegate: class { | |
func reachabilityDidChange(_ reachable: Bool) | |
} | |
class Reachability { | |
weak var delegate: ReachabilityDelegate? | |
} | |
class Model: ReachabilityDelegate { | |
func reachabilityDidChange(_ reachable: Bool) { |
// Make Optional a monad | |
extension Optional { | |
// Scala style, define `flatMap` directly | |
func flatMap<U>(f: (a: T) -> Optional<U>) -> Optional<U> { | |
switch (self) { | |
case .None: return nil | |
case .Some(let value): return f(a: value) | |
} | |
} |