Introduce ASCollectionInternal file and create always-available ASCView -> ASCNode backpointer.

This commit is contained in:
Scott Goodson
2016-01-01 23:36:00 -08:00
parent 1d1a248167
commit 25b6f29584
12 changed files with 105 additions and 86 deletions

View File

@@ -112,8 +112,8 @@
05F20AA41A15733C00DCA68A /* ASImageProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = 05F20AA31A15733C00DCA68A /* ASImageProtocols.h */; settings = {ATTRIBUTES = (Public, ); }; }; 05F20AA41A15733C00DCA68A /* ASImageProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = 05F20AA31A15733C00DCA68A /* ASImageProtocols.h */; settings = {ATTRIBUTES = (Public, ); }; };
18C2ED7E1B9B7DE800F627B3 /* ASCollectionNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C2ED7C1B9B7DE800F627B3 /* ASCollectionNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; 18C2ED7E1B9B7DE800F627B3 /* ASCollectionNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C2ED7C1B9B7DE800F627B3 /* ASCollectionNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
18C2ED7F1B9B7DE800F627B3 /* ASCollectionNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C2ED7C1B9B7DE800F627B3 /* ASCollectionNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; 18C2ED7F1B9B7DE800F627B3 /* ASCollectionNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C2ED7C1B9B7DE800F627B3 /* ASCollectionNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
18C2ED801B9B7DE800F627B3 /* ASCollectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C2ED7D1B9B7DE800F627B3 /* ASCollectionNode.m */; }; 18C2ED801B9B7DE800F627B3 /* ASCollectionNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 18C2ED7D1B9B7DE800F627B3 /* ASCollectionNode.mm */; };
18C2ED831B9B7DE800F627B3 /* ASCollectionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C2ED7D1B9B7DE800F627B3 /* ASCollectionNode.m */; }; 18C2ED831B9B7DE800F627B3 /* ASCollectionNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 18C2ED7D1B9B7DE800F627B3 /* ASCollectionNode.mm */; };
1950C4491A3BB5C1005C8279 /* ASEqualityHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 1950C4481A3BB5C1005C8279 /* ASEqualityHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1950C4491A3BB5C1005C8279 /* ASEqualityHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 1950C4481A3BB5C1005C8279 /* ASEqualityHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; };
204C979E1B362CB3002B1083 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 204C979D1B362CB3002B1083 /* Default-568h@2x.png */; }; 204C979E1B362CB3002B1083 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 204C979D1B362CB3002B1083 /* Default-568h@2x.png */; };
205F0E0F1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h in Headers */ = {isa = PBXBuildFile; fileRef = 205F0E0D1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h */; settings = {ATTRIBUTES = (Public, ); }; }; 205F0E0F1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h in Headers */ = {isa = PBXBuildFile; fileRef = 205F0E0D1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -466,6 +466,10 @@
DE8BEAC21C2DF3FC00D57C12 /* ASDelegateProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = DE8BEABF1C2DF3FC00D57C12 /* ASDelegateProxy.h */; }; DE8BEAC21C2DF3FC00D57C12 /* ASDelegateProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = DE8BEABF1C2DF3FC00D57C12 /* ASDelegateProxy.h */; };
DE8BEAC31C2DF3FC00D57C12 /* ASDelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = DE8BEAC01C2DF3FC00D57C12 /* ASDelegateProxy.m */; }; DE8BEAC31C2DF3FC00D57C12 /* ASDelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = DE8BEAC01C2DF3FC00D57C12 /* ASDelegateProxy.m */; };
DE8BEAC41C2DF3FC00D57C12 /* ASDelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = DE8BEAC01C2DF3FC00D57C12 /* ASDelegateProxy.m */; }; DE8BEAC41C2DF3FC00D57C12 /* ASDelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = DE8BEAC01C2DF3FC00D57C12 /* ASDelegateProxy.m */; };
DEC146B61C37A16A004A0EE7 /* ASCollectionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = DEC146B41C37A16A004A0EE7 /* ASCollectionInternal.h */; };
DEC146B71C37A16A004A0EE7 /* ASCollectionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = DEC146B41C37A16A004A0EE7 /* ASCollectionInternal.h */; };
DEC146B81C37A16A004A0EE7 /* ASCollectionInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = DEC146B51C37A16A004A0EE7 /* ASCollectionInternal.m */; };
DEC146B91C37A16A004A0EE7 /* ASCollectionInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = DEC146B51C37A16A004A0EE7 /* ASCollectionInternal.m */; };
DECBD6E71BE56E1900CF4905 /* ASButtonNode.h in Headers */ = {isa = PBXBuildFile; fileRef = DECBD6E51BE56E1900CF4905 /* ASButtonNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; DECBD6E71BE56E1900CF4905 /* ASButtonNode.h in Headers */ = {isa = PBXBuildFile; fileRef = DECBD6E51BE56E1900CF4905 /* ASButtonNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
DECBD6E81BE56E1900CF4905 /* ASButtonNode.h in Headers */ = {isa = PBXBuildFile; fileRef = DECBD6E51BE56E1900CF4905 /* ASButtonNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; DECBD6E81BE56E1900CF4905 /* ASButtonNode.h in Headers */ = {isa = PBXBuildFile; fileRef = DECBD6E51BE56E1900CF4905 /* ASButtonNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
DECBD6E91BE56E1900CF4905 /* ASButtonNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = DECBD6E61BE56E1900CF4905 /* ASButtonNode.mm */; }; DECBD6E91BE56E1900CF4905 /* ASButtonNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = DECBD6E61BE56E1900CF4905 /* ASButtonNode.mm */; };
@@ -609,7 +613,7 @@
05EA6FE61AC0966E00E35788 /* ASSnapshotTestCase.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASSnapshotTestCase.mm; sourceTree = "<group>"; }; 05EA6FE61AC0966E00E35788 /* ASSnapshotTestCase.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASSnapshotTestCase.mm; sourceTree = "<group>"; };
05F20AA31A15733C00DCA68A /* ASImageProtocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASImageProtocols.h; sourceTree = "<group>"; }; 05F20AA31A15733C00DCA68A /* ASImageProtocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASImageProtocols.h; sourceTree = "<group>"; };
18C2ED7C1B9B7DE800F627B3 /* ASCollectionNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASCollectionNode.h; sourceTree = "<group>"; }; 18C2ED7C1B9B7DE800F627B3 /* ASCollectionNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASCollectionNode.h; sourceTree = "<group>"; };
18C2ED7D1B9B7DE800F627B3 /* ASCollectionNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASCollectionNode.m; sourceTree = "<group>"; }; 18C2ED7D1B9B7DE800F627B3 /* ASCollectionNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASCollectionNode.mm; sourceTree = "<group>"; };
1950C4481A3BB5C1005C8279 /* ASEqualityHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASEqualityHelpers.h; sourceTree = "<group>"; }; 1950C4481A3BB5C1005C8279 /* ASEqualityHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASEqualityHelpers.h; sourceTree = "<group>"; };
204C979D1B362CB3002B1083 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "../Default-568h@2x.png"; sourceTree = "<group>"; }; 204C979D1B362CB3002B1083 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "../Default-568h@2x.png"; sourceTree = "<group>"; };
205F0E0D1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionViewLayout+ASConvenience.h"; sourceTree = "<group>"; }; 205F0E0D1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionViewLayout+ASConvenience.h"; sourceTree = "<group>"; };
@@ -765,6 +769,8 @@
DE6EA3211C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ASDisplayNode+FrameworkPrivate.h"; sourceTree = "<group>"; }; DE6EA3211C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ASDisplayNode+FrameworkPrivate.h"; sourceTree = "<group>"; };
DE8BEABF1C2DF3FC00D57C12 /* ASDelegateProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASDelegateProxy.h; sourceTree = "<group>"; }; DE8BEABF1C2DF3FC00D57C12 /* ASDelegateProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASDelegateProxy.h; sourceTree = "<group>"; };
DE8BEAC01C2DF3FC00D57C12 /* ASDelegateProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASDelegateProxy.m; sourceTree = "<group>"; }; DE8BEAC01C2DF3FC00D57C12 /* ASDelegateProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASDelegateProxy.m; sourceTree = "<group>"; };
DEC146B41C37A16A004A0EE7 /* ASCollectionInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASCollectionInternal.h; path = Details/ASCollectionInternal.h; sourceTree = "<group>"; };
DEC146B51C37A16A004A0EE7 /* ASCollectionInternal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASCollectionInternal.m; path = Details/ASCollectionInternal.m; sourceTree = "<group>"; };
DECBD6E51BE56E1900CF4905 /* ASButtonNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASButtonNode.h; sourceTree = "<group>"; }; DECBD6E51BE56E1900CF4905 /* ASButtonNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASButtonNode.h; sourceTree = "<group>"; };
DECBD6E61BE56E1900CF4905 /* ASButtonNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASButtonNode.mm; sourceTree = "<group>"; }; DECBD6E61BE56E1900CF4905 /* ASButtonNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASButtonNode.mm; sourceTree = "<group>"; };
DECC2ECB1C35C1C600388446 /* ASRangeControllerBeta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASRangeControllerBeta.h; sourceTree = "<group>"; }; DECC2ECB1C35C1C600388446 /* ASRangeControllerBeta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASRangeControllerBeta.h; sourceTree = "<group>"; };
@@ -891,10 +897,12 @@
055F1A3A19ABD43F004DAFF1 /* ASCellNode.h */, 055F1A3A19ABD43F004DAFF1 /* ASCellNode.h */,
AC6456071B0A335000CF11B8 /* ASCellNode.m */, AC6456071B0A335000CF11B8 /* ASCellNode.m */,
18C2ED7C1B9B7DE800F627B3 /* ASCollectionNode.h */, 18C2ED7C1B9B7DE800F627B3 /* ASCollectionNode.h */,
18C2ED7D1B9B7DE800F627B3 /* ASCollectionNode.m */, 18C2ED7D1B9B7DE800F627B3 /* ASCollectionNode.mm */,
AC3C4A4F1A1139C100143C57 /* ASCollectionView.h */, AC3C4A4F1A1139C100143C57 /* ASCollectionView.h */,
AC3C4A501A1139C100143C57 /* ASCollectionView.mm */, AC3C4A501A1139C100143C57 /* ASCollectionView.mm */,
AC3C4A531A113EEC00143C57 /* ASCollectionViewProtocols.h */, AC3C4A531A113EEC00143C57 /* ASCollectionViewProtocols.h */,
DEC146B41C37A16A004A0EE7 /* ASCollectionInternal.h */,
DEC146B51C37A16A004A0EE7 /* ASCollectionInternal.m */,
058D09D5195D050800B7D73C /* ASControlNode.h */, 058D09D5195D050800B7D73C /* ASControlNode.h */,
058D09D6195D050800B7D73C /* ASControlNode.m */, 058D09D6195D050800B7D73C /* ASControlNode.m */,
DECBD6E51BE56E1900CF4905 /* ASButtonNode.h */, DECBD6E51BE56E1900CF4905 /* ASButtonNode.h */,
@@ -1367,6 +1375,7 @@
ACC945A91BA9E7A0005E1FB8 /* ASViewController.h in Headers */, ACC945A91BA9E7A0005E1FB8 /* ASViewController.h in Headers */,
6BDC61F61979037800E50D21 /* AsyncDisplayKit.h in Headers */, 6BDC61F61979037800E50D21 /* AsyncDisplayKit.h in Headers */,
257754AD1BEE44CD00737CA5 /* ASTextKitRenderer+Positioning.h in Headers */, 257754AD1BEE44CD00737CA5 /* ASTextKitRenderer+Positioning.h in Headers */,
DEC146B61C37A16A004A0EE7 /* ASCollectionInternal.h in Headers */,
205F0E211B376416007741D0 /* CGRect+ASConvenience.h in Headers */, 205F0E211B376416007741D0 /* CGRect+ASConvenience.h in Headers */,
058D0A66195D05DC00B7D73C /* NSMutableAttributedString+TextKitAdditions.h in Headers */, 058D0A66195D05DC00B7D73C /* NSMutableAttributedString+TextKitAdditions.h in Headers */,
205F0E0F1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h in Headers */, 205F0E0F1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h in Headers */,
@@ -1443,6 +1452,7 @@
34EFC75F1B701C8600AD841F /* ASInsetLayoutSpec.h in Headers */, 34EFC75F1B701C8600AD841F /* ASInsetLayoutSpec.h in Headers */,
34EFC75D1B701BE900AD841F /* ASInternalHelpers.h in Headers */, 34EFC75D1B701BE900AD841F /* ASInternalHelpers.h in Headers */,
34EFC7671B701CD900AD841F /* ASLayout.h in Headers */, 34EFC7671B701CD900AD841F /* ASLayout.h in Headers */,
DEC146B71C37A16A004A0EE7 /* ASCollectionInternal.h in Headers */,
34EFC7691B701CE100AD841F /* ASLayoutable.h in Headers */, 34EFC7691B701CE100AD841F /* ASLayoutable.h in Headers */,
9CDC18CD1B910E12004965E2 /* ASLayoutablePrivate.h in Headers */, 9CDC18CD1B910E12004965E2 /* ASLayoutablePrivate.h in Headers */,
B35062201B010EFD0018CF92 /* ASLayoutController.h in Headers */, B35062201B010EFD0018CF92 /* ASLayoutController.h in Headers */,
@@ -1711,7 +1721,7 @@
AC6456091B0A335000CF11B8 /* ASCellNode.m in Sources */, AC6456091B0A335000CF11B8 /* ASCellNode.m in Sources */,
DE8BEAC31C2DF3FC00D57C12 /* ASDelegateProxy.m in Sources */, DE8BEAC31C2DF3FC00D57C12 /* ASDelegateProxy.m in Sources */,
ACF6ED1D1B17843500DA7C62 /* ASCenterLayoutSpec.mm in Sources */, ACF6ED1D1B17843500DA7C62 /* ASCenterLayoutSpec.mm in Sources */,
18C2ED801B9B7DE800F627B3 /* ASCollectionNode.m in Sources */, 18C2ED801B9B7DE800F627B3 /* ASCollectionNode.mm in Sources */,
92DD2FE41BF4B97E0074C9DD /* ASMapNode.mm in Sources */, 92DD2FE41BF4B97E0074C9DD /* ASMapNode.mm in Sources */,
AC3C4A521A1139C100143C57 /* ASCollectionView.mm in Sources */, AC3C4A521A1139C100143C57 /* ASCollectionView.mm in Sources */,
205F0E1E1B373A2C007741D0 /* ASCollectionViewLayoutController.mm in Sources */, 205F0E1E1B373A2C007741D0 /* ASCollectionViewLayoutController.mm in Sources */,
@@ -1724,6 +1734,7 @@
058D0A2A195D050800B7D73C /* ASDisplayNode+UIViewBridge.mm in Sources */, 058D0A2A195D050800B7D73C /* ASDisplayNode+UIViewBridge.mm in Sources */,
25E327581C16819500A2170C /* ASPagerNode.m in Sources */, 25E327581C16819500A2170C /* ASPagerNode.m in Sources */,
058D0A14195D050800B7D73C /* ASDisplayNode.mm in Sources */, 058D0A14195D050800B7D73C /* ASDisplayNode.mm in Sources */,
DEC146B81C37A16A004A0EE7 /* ASCollectionInternal.m in Sources */,
058D0A15195D050800B7D73C /* ASDisplayNodeExtras.mm in Sources */, 058D0A15195D050800B7D73C /* ASDisplayNodeExtras.mm in Sources */,
0587F9BE1A7309ED00AFF0BA /* ASEditableTextNode.mm in Sources */, 0587F9BE1A7309ED00AFF0BA /* ASEditableTextNode.mm in Sources */,
464052231A3F83C40061C0BA /* ASFlowLayoutController.mm in Sources */, 464052231A3F83C40061C0BA /* ASFlowLayoutController.mm in Sources */,
@@ -1845,7 +1856,7 @@
B35062161B010EFD0018CF92 /* ASBatchContext.mm in Sources */, B35062161B010EFD0018CF92 /* ASBatchContext.mm in Sources */,
AC47D9421B3B891B00AAEE9D /* ASCellNode.m in Sources */, AC47D9421B3B891B00AAEE9D /* ASCellNode.m in Sources */,
34EFC7641B701CC600AD841F /* ASCenterLayoutSpec.mm in Sources */, 34EFC7641B701CC600AD841F /* ASCenterLayoutSpec.mm in Sources */,
18C2ED831B9B7DE800F627B3 /* ASCollectionNode.m in Sources */, 18C2ED831B9B7DE800F627B3 /* ASCollectionNode.mm in Sources */,
B35061F61B010EFD0018CF92 /* ASCollectionView.mm in Sources */, B35061F61B010EFD0018CF92 /* ASCollectionView.mm in Sources */,
509E68641B3AEDB7009B9150 /* ASCollectionViewLayoutController.mm in Sources */, 509E68641B3AEDB7009B9150 /* ASCollectionViewLayoutController.mm in Sources */,
B35061F91B010EFD0018CF92 /* ASControlNode.m in Sources */, B35061F91B010EFD0018CF92 /* ASControlNode.m in Sources */,
@@ -1855,6 +1866,7 @@
B350624E1B010EFD0018CF92 /* ASDisplayNode+AsyncDisplay.mm in Sources */, B350624E1B010EFD0018CF92 /* ASDisplayNode+AsyncDisplay.mm in Sources */,
25E327591C16819500A2170C /* ASPagerNode.m in Sources */, 25E327591C16819500A2170C /* ASPagerNode.m in Sources */,
B35062501B010EFD0018CF92 /* ASDisplayNode+DebugTiming.mm in Sources */, B35062501B010EFD0018CF92 /* ASDisplayNode+DebugTiming.mm in Sources */,
DEC146B91C37A16A004A0EE7 /* ASCollectionInternal.m in Sources */,
254C6B891BF94F8A003EC431 /* ASTextKitRenderer+Positioning.mm in Sources */, 254C6B891BF94F8A003EC431 /* ASTextKitRenderer+Positioning.mm in Sources */,
B35062511B010EFD0018CF92 /* ASDisplayNode+UIViewBridge.mm in Sources */, B35062511B010EFD0018CF92 /* ASDisplayNode+UIViewBridge.mm in Sources */,
B35061FC1B010EFD0018CF92 /* ASDisplayNode.mm in Sources */, B35061FC1B010EFD0018CF92 /* ASDisplayNode.mm in Sources */,

View File

@@ -7,7 +7,9 @@
// //
#import "ASCollectionNode.h" #import "ASCollectionNode.h"
#import "ASCollectionInternal.h"
#import "ASDisplayNode+Subclasses.h" #import "ASDisplayNode+Subclasses.h"
#include <vector>
@interface _ASCollectionPendingState : NSObject @interface _ASCollectionPendingState : NSObject
@property (weak, nonatomic) id <ASCollectionDelegate> delegate; @property (weak, nonatomic) id <ASCollectionDelegate> delegate;
@@ -17,14 +19,41 @@
@implementation _ASCollectionPendingState @implementation _ASCollectionPendingState
@end @end
#if 0 // This is not used yet, but will provide a way to avoid creating the view to set range values.
@implementation _ASCollectionPendingState
{
std::vector<ASRangeTuningParameters> _tuningParameters;
}
- (instancetype)init
{
if (!(self = [super init])) {
return nil;
}
_tuningParameters = std::vector<ASRangeTuningParameters>(ASLayoutRangeTypeCount);
return self;
}
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType
{
ASDisplayNodeAssert(rangeType < _tuningParameters.size(), @"Requesting a range that is OOB for the configured tuning parameters");
return _tuningParameters[rangeType];
}
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
{
ASDisplayNodeAssert(rangeType < _tuningParameters.size(), @"Requesting a range that is OOB for the configured tuning parameters");
ASDisplayNodeAssert(rangeType != ASLayoutRangeTypeVisible, @"Must not set Visible range tuning parameters (always 0, 0)");
_tuningParameters[rangeType] = tuningParameters;
}
@end
#endif
@interface ASCollectionNode () @interface ASCollectionNode ()
@property (nonatomic) _ASCollectionPendingState *pendingState; @property (nonatomic) _ASCollectionPendingState *pendingState;
@end @end
@interface ASCollectionView ()
- (instancetype)_initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout ownedByNode:(BOOL)ownedByNode;
@end
@implementation ASCollectionNode @implementation ASCollectionNode
- (instancetype)init - (instancetype)init
@@ -42,7 +71,10 @@
- (instancetype)_initWithCollectionView:(ASCollectionView *)collectionView - (instancetype)_initWithCollectionView:(ASCollectionView *)collectionView
{ {
if (self = [super initWithViewBlock:^UIView *{ return collectionView; }]) { ASDisplayNodeViewBlock collectionViewBlock = ^UIView *{ return collectionView; };
if (self = [super initWithViewBlock:collectionViewBlock]) {
// ASCollectionView created directly by the app. Trigger -loadView to set up collectionNode pointer.
__unused ASCollectionView *collectionView = [self view]; __unused ASCollectionView *collectionView = [self view];
return self; return self;
} }
@@ -70,6 +102,7 @@
self.pendingState = nil; self.pendingState = nil;
ASCollectionView *view = self.view; ASCollectionView *view = self.view;
view.collectionNode = self;
view.asyncDelegate = pendingState.delegate; view.asyncDelegate = pendingState.delegate;
view.asyncDataSource = pendingState.dataSource; view.asyncDataSource = pendingState.dataSource;
} }
@@ -129,7 +162,7 @@
- (void)visibilityDidChange:(BOOL)isVisible - (void)visibilityDidChange:(BOOL)isVisible
{ {
NSLog(@"%@ - visible: %d", self, isVisible);
} }
- (void)clearContents - (void)clearContents
@@ -148,12 +181,12 @@
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType - (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType
{ {
return [self.view tuningParametersForRangeType:rangeType]; return [self.view.rangeController tuningParametersForRangeType:rangeType];
} }
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType - (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
{ {
return [self.view setTuningParameters:tuningParameters forRangeType:rangeType]; return [self.view.rangeController setTuningParameters:tuningParameters forRangeType:rangeType];
} }
- (void)reloadDataWithCompletion:(void (^)())completion - (void)reloadDataWithCompletion:(void (^)())completion

View File

@@ -15,6 +15,7 @@
#import <AsyncDisplayKit/ASCollectionViewFlowLayoutInspector.h> #import <AsyncDisplayKit/ASCollectionViewFlowLayoutInspector.h>
@class ASCellNode; @class ASCellNode;
@class ASCollectionNode;
@protocol ASCollectionDataSource; @protocol ASCollectionDataSource;
@protocol ASCollectionDelegate; @protocol ASCollectionDelegate;
@protocol ASCollectionViewLayoutInspecting; @protocol ASCollectionViewLayoutInspecting;
@@ -43,6 +44,9 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)layout; - (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)layout;
- (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout; - (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout;
// The corresponding ASCollectionNode, which exists even if directly allocating & handling the view class.
@property (nonatomic, weak, readonly) ASCollectionNode *collectionNode;
@property (nonatomic, weak) id<ASCollectionDelegate> asyncDelegate; @property (nonatomic, weak) id<ASCollectionDelegate> asyncDelegate;
@property (nonatomic, weak) id<ASCollectionDataSource> asyncDataSource; @property (nonatomic, weak) id<ASCollectionDataSource> asyncDataSource;

View File

@@ -105,7 +105,10 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
// We create a node so that logic related to appearance, memory management, etc can be located there // We create a node so that logic related to appearance, memory management, etc can be located there
// for both the node-based and view-based version of the table. // for both the node-based and view-based version of the table.
// This also permits sharing logic with ASTableNode, as the superclass is not UIKit-controlled. // This also permits sharing logic with ASTableNode, as the superclass is not UIKit-controlled.
@property (nonatomic, retain) ASCollectionNode *strongCollectionNode; @property (nonatomic, strong) ASCollectionNode *strongCollectionNode;
// Always set, whether ASCollectionView is created directly or via ASCollectionNode.
@property (nonatomic, weak) ASCollectionNode *collectionNode;
@end @end
@@ -221,8 +224,7 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
if (_flowLayoutInspector == nil) { if (_flowLayoutInspector == nil) {
UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)self.collectionViewLayout; UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)self.collectionViewLayout;
ASDisplayNodeAssertNotNil(layout, @"Collection view layout must be a flow layout to use the built-in inspector"); ASDisplayNodeAssertNotNil(layout, @"Collection view layout must be a flow layout to use the built-in inspector");
_flowLayoutInspector = [[ASCollectionViewFlowLayoutInspector alloc] initWithCollectionView:self _flowLayoutInspector = [[ASCollectionViewFlowLayoutInspector alloc] initWithCollectionView:self flowLayout:layout];
flowLayout:layout];
} }
return _flowLayoutInspector; return _flowLayoutInspector;
} }
@@ -323,14 +325,15 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType - (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
{ {
[_rangeController setTuningParameters:tuningParameters forRangeType:rangeType]; [_collectionNode setTuningParameters:tuningParameters forRangeType:rangeType];
} }
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType - (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType
{ {
return [_rangeController tuningParametersForRangeType:rangeType]; return [_collectionNode tuningParametersForRangeType:rangeType];
} }
// These deprecated methods harken back from a time where only one range type existed.
- (ASRangeTuningParameters)rangeTuningParameters - (ASRangeTuningParameters)rangeTuningParameters
{ {
return [self tuningParametersForRangeType:ASLayoutRangeTypeDisplay]; return [self tuningParametersForRangeType:ASLayoutRangeTypeDisplay];
@@ -762,6 +765,11 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
#pragma mark - ASRangeControllerDataSource #pragma mark - ASRangeControllerDataSource
- (ASRangeController *)rangeController
{
return _rangeController;
}
- (NSArray *)visibleNodeIndexPathsForRangeController:(ASRangeController *)rangeController - (NSArray *)visibleNodeIndexPathsForRangeController:(ASRangeController *)rangeController
{ {
ASDisplayNodeAssertMainThread(); ASDisplayNodeAssertMainThread();

View File

@@ -7,10 +7,8 @@
*/ */
#import "ASAbstractLayoutController.h" #import "ASAbstractLayoutController.h"
#include <vector>
#import "ASAssert.h" #import "ASAssert.h"
#include <vector>
@interface ASAbstractLayoutController () { @interface ASAbstractLayoutController () {
std::vector<ASRangeTuningParameters> _tuningParameters; std::vector<ASRangeTuningParameters> _tuningParameters;

View File

@@ -0,0 +1,18 @@
//
// ASCollectionInternal.h
// AsyncDisplayKit
//
// Created by Scott Goodson on 1/1/16.
// Copyright © 2016 Facebook. All rights reserved.
//
#import "ASCollectionView.h"
#import "ASCollectionNode.h"
#import "ASRangeController.h"
@interface ASCollectionView ()
- (instancetype)_initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout ownedByNode:(BOOL)ownedByNode;
@property (nonatomic, weak, readwrite) ASCollectionNode *collectionNode;
@property (nonatomic, strong, readonly) ASRangeController *rangeController;
@end

View File

@@ -0,0 +1,9 @@
//
// ASCollectionInternal.m
// AsyncDisplayKit
//
// Created by Scott Goodson on 1/1/16.
// Copyright © 2016 Facebook. All rights reserved.
//
#import "ASCollectionInternal.h"

View File

@@ -124,6 +124,7 @@
NSLog(@"indexPath %@, Visible: %d, Display: %d, FetchData: %d", indexPath, [visibleIndexPaths containsObject:indexPath], [displayIndexPaths containsObject:indexPath], [fetchDataIndexPaths containsObject:indexPath]); NSLog(@"indexPath %@, Visible: %d, Display: %d, FetchData: %d", indexPath, [visibleIndexPaths containsObject:indexPath], [displayIndexPaths containsObject:indexPath], [fetchDataIndexPaths containsObject:indexPath]);
} }
*/ */
_rangeIsValid = YES; _rangeIsValid = YES;
_queuedRangeUpdate = NO; _queuedRangeUpdate = NO;

View File

@@ -130,7 +130,6 @@
AC3C4A5B1A11F47200143C57 /* Frameworks */, AC3C4A5B1A11F47200143C57 /* Frameworks */,
AC3C4A5C1A11F47200143C57 /* Resources */, AC3C4A5C1A11F47200143C57 /* Resources */,
A6902C454C7661D0D277AC62 /* Copy Pods Resources */, A6902C454C7661D0D277AC62 /* Copy Pods Resources */,
EC37EEC9933F5786936BFE7C /* Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
@@ -201,21 +200,6 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
EC37EEC9933F5786936BFE7C /* Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
F868CFBB21824CC9521B6588 /* Check Pods Manifest.lock */ = { F868CFBB21824CC9521B6588 /* Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;

View File

@@ -128,7 +128,6 @@
05E2127E19D4DB510098F589 /* Frameworks */, 05E2127E19D4DB510098F589 /* Frameworks */,
05E2127F19D4DB510098F589 /* Resources */, 05E2127F19D4DB510098F589 /* Resources */,
F012A6F39E0149F18F564F50 /* Copy Pods Resources */, F012A6F39E0149F18F564F50 /* Copy Pods Resources */,
54296444B3B4D82560F3906E /* Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
@@ -185,21 +184,6 @@
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
54296444B3B4D82560F3906E /* Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
E080B80F89C34A25B3488E26 /* Check Pods Manifest.lock */ = { E080B80F89C34A25B3488E26 /* Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;

View File

@@ -123,7 +123,6 @@
05E2127E19D4DB510098F589 /* Frameworks */, 05E2127E19D4DB510098F589 /* Frameworks */,
05E2127F19D4DB510098F589 /* Resources */, 05E2127F19D4DB510098F589 /* Resources */,
F012A6F39E0149F18F564F50 /* Copy Pods Resources */, F012A6F39E0149F18F564F50 /* Copy Pods Resources */,
93B7780A33739EF25F20366B /* Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
@@ -180,21 +179,6 @@
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
93B7780A33739EF25F20366B /* Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
E080B80F89C34A25B3488E26 /* Check Pods Manifest.lock */ = { E080B80F89C34A25B3488E26 /* Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;

View File

@@ -128,7 +128,6 @@
05E2127E19D4DB510098F589 /* Frameworks */, 05E2127E19D4DB510098F589 /* Frameworks */,
05E2127F19D4DB510098F589 /* Resources */, 05E2127F19D4DB510098F589 /* Resources */,
F012A6F39E0149F18F564F50 /* Copy Pods Resources */, F012A6F39E0149F18F564F50 /* Copy Pods Resources */,
ACCB3408566E7626721EF2D5 /* Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
@@ -185,21 +184,6 @@
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
ACCB3408566E7626721EF2D5 /* Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
E080B80F89C34A25B3488E26 /* Check Pods Manifest.lock */ = { E080B80F89C34A25B3488E26 /* Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;