Skip to content

Commit

Permalink
finally solved the mystery missing links! a Swift 4.0 ARC optimisatio…
Browse files Browse the repository at this point in the history
…n has been discarding timeline items before they were returned
  • Loading branch information
sobri909 committed Jun 16, 2018
1 parent 1f8b2fa commit 52baef9
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions LocoKit/Base/Timelines/Items/TimelineItem.swift
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,12 @@ open class TimelineItem: TimelineObject, Hashable, Comparable, Codable {
private weak var _previousItem: TimelineItem?
public var previousItem: TimelineItem? {
get {
if let cached = self._previousItem, cached.itemId == self.previousItemId, !cached.deleted, cached != self { return cached }
if let itemId = self.previousItemId, let item = store?.item(for: itemId), !item.deleted, item != self { self._previousItem = item }
return self._previousItem
if let cached = _previousItem, cached.itemId == previousItemId, !cached.deleted, cached != self { return cached }
if let itemId = previousItemId, let item = store?.item(for: itemId), !item.deleted, item != self {
_previousItem = item
return item
}
return nil
}
set(newValue) {
if newValue == self { os_log("Can't link to self", type: .error); return }
Expand Down Expand Up @@ -132,9 +135,12 @@ open class TimelineItem: TimelineObject, Hashable, Comparable, Codable {
private weak var _nextItem: TimelineItem?
public var nextItem: TimelineItem? {
get {
if let cached = self._nextItem, cached.itemId == self.nextItemId, !cached.deleted, cached != self { return cached }
if let itemId = self.nextItemId, let item = store?.item(for: itemId), !item.deleted, item != self { self._nextItem = item }
return self._nextItem
if let cached = _nextItem, cached.itemId == nextItemId, !cached.deleted, cached != self { return cached }
if let itemId = nextItemId, let item = store?.item(for: itemId), !item.deleted, item != self {
_nextItem = item
return item
}
return nil
}
set(newValue) {
if newValue == self { os_log("Can't link to self", type: .error); return }
Expand Down

0 comments on commit 52baef9

Please sign in to comment.