mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-09 06:00:43 +00:00
* Minor refactors in ASCollectionView and its private cell classes - `_ASCollectionReusableView` and `_ASCollectionViewCell` no longer expose getters for their collection element and cell node properties. This is to make sure that clients can only obtain elements from the visible map which is always the source of truth. - Since the map can return `nil` for an element request, it's much safer to check and avoid adding/removing a nil pointer to an `NSArray`. - Since we use a special way to check whether an object of kind of `_ASCollectionViewCell` or `_ASCollectionReusableView`, based on the assumption that these classes are subclass restricted, I added cast-or-return macros in the header files, closer to where the restrictions are declared. * Add ASDynamicCastStrict * Add element and node properties back to _ASCollectionReusableView and _ASCollectionViewCell * Assert unexpected nil elements * Always mark an element visible even if it is backed by an UIKit / non-_ASCollection* view * Fix typo * Remove unnecessary changes * Dump mistakes * Update CHANGELOG * Can't track visibility of elements backed by non-_AS views
44 lines
1.6 KiB
Objective-C
44 lines
1.6 KiB
Objective-C
//
|
|
// _ASCollectionViewCell.h
|
|
// Texture
|
|
//
|
|
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
|
// This source code is licensed under the BSD-style license found in the
|
|
// LICENSE file in the /ASDK-Licenses directory of this source tree. An additional
|
|
// grant of patent rights can be found in the PATENTS file in the same directory.
|
|
//
|
|
// Modifications to this file made after 4/13/2017 are: Copyright (c) 2017-present,
|
|
// Pinterest, Inc. Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
|
|
#import <UIKit/UIKit.h>
|
|
#import <AsyncDisplayKit/ASBaseDefines.h>
|
|
#import <AsyncDisplayKit/ASCellNode.h>
|
|
|
|
@class ASCollectionElement;
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
AS_SUBCLASSING_RESTRICTED // Note: ASDynamicCastStrict is used on instances of this class based on this restriction.
|
|
@interface _ASCollectionViewCell : UICollectionViewCell
|
|
|
|
@property (nonatomic, strong, nullable) ASCollectionElement *element;
|
|
@property (nonatomic, strong, readonly, nullable) ASCellNode *node;
|
|
@property (nonatomic, strong, nullable) UICollectionViewLayoutAttributes *layoutAttributes;
|
|
|
|
/**
|
|
* Whether or not this cell is interested in cell node visibility events.
|
|
* -cellNodeVisibilityEvent:inScrollView: should be called only if this property is YES.
|
|
*/
|
|
@property (nonatomic, readonly) BOOL consumesCellNodeVisibilityEvents;
|
|
|
|
- (void)cellNodeVisibilityEvent:(ASCellNodeVisibilityEvent)event inScrollView:(UIScrollView *)scrollView;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|