mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-27 19:25:11 +08:00
Added lightweight generic annotations
Summary: public Added lightweight genarics annotations to make the code more readable and help the compiler catch bugs. Fixed some type bugs and improved bridge validation in a few places. Reviewed By: javache Differential Revision: D2600189 fb-gh-sync-id: f81e22f2cdc107bf8d0b15deec6d5b83aacc5b56
This commit is contained in:
committed by
facebook-github-bot-7
parent
31565781f2
commit
c5b990f65f
@@ -19,7 +19,7 @@
|
||||
CGPoint _endPoint;
|
||||
}
|
||||
|
||||
- (instancetype)initWithArray:(NSArray *)array
|
||||
- (instancetype)initWithArray:(NSArray<NSNumber *> *)array
|
||||
{
|
||||
if ((self = [super initWithArray:array])) {
|
||||
if (array.count < 5) {
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
CGRect _rect;
|
||||
}
|
||||
|
||||
- (instancetype)initWithArray:(NSArray *)array
|
||||
- (instancetype)initWithArray:(NSArray<id /* imagesource + numbers */> *)array
|
||||
{
|
||||
if ((self = [super initWithArray:array])) {
|
||||
if (array.count < 6) {
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
CGFloat _radiusRatio;
|
||||
}
|
||||
|
||||
- (instancetype)initWithArray:(NSArray *)array
|
||||
- (instancetype)initWithArray:(NSArray<NSNumber *> *)array
|
||||
{
|
||||
if ((self = [super initWithArray:array])) {
|
||||
if (array.count < 7) {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
CGColorRef _color;
|
||||
}
|
||||
|
||||
- (instancetype)initWithArray:(NSArray *)array
|
||||
- (instancetype)initWithArray:(NSArray<NSNumber *> *)array
|
||||
{
|
||||
if ((self = [super initWithArray:array])) {
|
||||
_color = CGColorRetain([RCTConvert CGColor:array offset:1]);
|
||||
|
||||
@@ -62,7 +62,7 @@ RCT_EXPORT_METHOD(showActionSheetWithOptions:(NSDictionary *)options
|
||||
}
|
||||
|
||||
NSString *title = [RCTConvert NSString:options[@"title"]];
|
||||
NSArray *buttons = [RCTConvert NSStringArray:options[@"options"]];
|
||||
NSArray<NSString *> *buttons = [RCTConvert NSStringArray:options[@"options"]];
|
||||
NSInteger destructiveButtonIndex = options[@"destructiveButtonIndex"] ? [RCTConvert NSInteger:options[@"destructiveButtonIndex"]] : -1;
|
||||
NSInteger cancelButtonIndex = options[@"cancelButtonIndex"] ? [RCTConvert NSInteger:options[@"cancelButtonIndex"]] : -1;
|
||||
|
||||
@@ -151,7 +151,7 @@ RCT_EXPORT_METHOD(showShareActionSheetWithOptions:(NSDictionary *)options
|
||||
return;
|
||||
}
|
||||
|
||||
NSMutableArray *items = [NSMutableArray array];
|
||||
NSMutableArray<id /* NSString or NSURL */> *items = [NSMutableArray array];
|
||||
NSString *message = [RCTConvert NSString:options[@"message"]];
|
||||
if (message) {
|
||||
[items addObject:message];
|
||||
|
||||
@@ -7,7 +7,17 @@
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
#import <AssetsLibrary/AssetsLibrary.h>
|
||||
|
||||
#import "RCTBridgeModule.h"
|
||||
#import "RCTConvert.h"
|
||||
|
||||
@interface RCTConvert (ALAssetGroup)
|
||||
|
||||
+ (ALAssetsGroupType)ALAssetsGroupType:(id)json;
|
||||
+ (ALAssetsFilter *)ALAssetsFilter:(id)json;
|
||||
|
||||
@end
|
||||
|
||||
@interface RCTCameraRollManager : NSObject <RCTBridgeModule>
|
||||
|
||||
|
||||
@@ -9,17 +9,70 @@
|
||||
|
||||
#import "RCTCameraRollManager.h"
|
||||
|
||||
#import <AssetsLibrary/AssetsLibrary.h>
|
||||
#import <CoreLocation/CoreLocation.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "RCTAssetsLibraryImageLoader.h"
|
||||
#import "RCTBridge.h"
|
||||
#import "RCTConvert.h"
|
||||
#import "RCTImageLoader.h"
|
||||
#import "RCTLog.h"
|
||||
#import "RCTUtils.h"
|
||||
|
||||
@implementation RCTConvert (ALAssetGroup)
|
||||
|
||||
RCT_ENUM_CONVERTER(ALAssetsGroupType, (@{
|
||||
|
||||
// New values
|
||||
@"album": @(ALAssetsGroupAlbum),
|
||||
@"all": @(ALAssetsGroupAll),
|
||||
@"event": @(ALAssetsGroupEvent),
|
||||
@"faces": @(ALAssetsGroupFaces),
|
||||
@"library": @(ALAssetsGroupLibrary),
|
||||
@"photo-stream": @(ALAssetsGroupPhotoStream),
|
||||
@"saved-photos": @(ALAssetsGroupSavedPhotos),
|
||||
|
||||
// Legacy values
|
||||
@"Album": @(ALAssetsGroupAlbum),
|
||||
@"All": @(ALAssetsGroupAll),
|
||||
@"Event": @(ALAssetsGroupEvent),
|
||||
@"Faces": @(ALAssetsGroupFaces),
|
||||
@"Library": @(ALAssetsGroupLibrary),
|
||||
@"PhotoStream": @(ALAssetsGroupPhotoStream),
|
||||
@"SavedPhotos": @(ALAssetsGroupSavedPhotos),
|
||||
|
||||
}), ALAssetsGroupSavedPhotos, integerValue)
|
||||
|
||||
+ (ALAssetsFilter *)ALAssetsFilter:(id)json
|
||||
{
|
||||
static NSDictionary *options;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
options = @{
|
||||
|
||||
// New values
|
||||
@"photos": [ALAssetsFilter allPhotos],
|
||||
@"videos": [ALAssetsFilter allVideos],
|
||||
@"all": [ALAssetsFilter allAssets],
|
||||
|
||||
// Legacy values
|
||||
@"Photos": [ALAssetsFilter allPhotos],
|
||||
@"Videos": [ALAssetsFilter allVideos],
|
||||
@"All": [ALAssetsFilter allAssets],
|
||||
};
|
||||
});
|
||||
|
||||
ALAssetsFilter *filter = options[json ?: @"photos"];
|
||||
if (!filter) {
|
||||
RCTLogError(@"Invalid filter option: '%@'. Expected one of 'photos',"
|
||||
"'videos' or 'all'.", json);
|
||||
}
|
||||
return filter ?: [ALAssetsFilter allPhotos];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation RCTCameraRollManager
|
||||
|
||||
RCT_EXPORT_MODULE()
|
||||
@@ -49,7 +102,9 @@ RCT_EXPORT_METHOD(saveImageWithTag:(NSString *)imageTag
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)callCallback:(RCTResponseSenderBlock)callback withAssets:(NSArray *)assets hasNextPage:(BOOL)hasNextPage
|
||||
- (void)callCallback:(RCTResponseSenderBlock)callback
|
||||
withAssets:(NSArray<NSDictionary *> *)assets
|
||||
hasNextPage:(BOOL)hasNextPage
|
||||
{
|
||||
if (!assets.count) {
|
||||
callback(@[@{
|
||||
@@ -72,45 +127,21 @@ RCT_EXPORT_METHOD(getPhotos:(NSDictionary *)params
|
||||
callback:(RCTResponseSenderBlock)callback
|
||||
errorCallback:(RCTResponseErrorBlock)errorCallback)
|
||||
{
|
||||
NSUInteger first = [params[@"first"] integerValue];
|
||||
NSString *afterCursor = params[@"after"];
|
||||
NSString *groupTypesStr = params[@"groupTypes"];
|
||||
NSString *groupName = params[@"groupName"];
|
||||
NSString *assetType = params[@"assetType"];
|
||||
ALAssetsGroupType groupTypes;
|
||||
|
||||
if ([groupTypesStr isEqualToString:@"Album"]) {
|
||||
groupTypes = ALAssetsGroupAlbum;
|
||||
} else if ([groupTypesStr isEqualToString:@"All"]) {
|
||||
groupTypes = ALAssetsGroupAll;
|
||||
} else if ([groupTypesStr isEqualToString:@"Event"]) {
|
||||
groupTypes = ALAssetsGroupEvent;
|
||||
} else if ([groupTypesStr isEqualToString:@"Faces"]) {
|
||||
groupTypes = ALAssetsGroupFaces;
|
||||
} else if ([groupTypesStr isEqualToString:@"Library"]) {
|
||||
groupTypes = ALAssetsGroupLibrary;
|
||||
} else if ([groupTypesStr isEqualToString:@"PhotoStream"]) {
|
||||
groupTypes = ALAssetsGroupPhotoStream;
|
||||
} else {
|
||||
groupTypes = ALAssetsGroupSavedPhotos;
|
||||
}
|
||||
NSUInteger first = [RCTConvert NSInteger:params[@"first"]];
|
||||
NSString *afterCursor = [RCTConvert NSString:params[@"after"]];
|
||||
NSString *groupName = [RCTConvert NSString:params[@"groupName"]];
|
||||
ALAssetsFilter *assetType = [RCTConvert ALAssetsFilter:params[@"assetType"]];
|
||||
ALAssetsGroupType groupTypes = [RCTConvert ALAssetsGroupType:params[@"groupTypes"]];
|
||||
|
||||
BOOL __block foundAfter = NO;
|
||||
BOOL __block hasNextPage = NO;
|
||||
BOOL __block calledCallback = NO;
|
||||
NSMutableArray *assets = [NSMutableArray new];
|
||||
NSMutableArray<NSDictionary *> *assets = [NSMutableArray new];
|
||||
|
||||
[_bridge.assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:^(ALAssetsGroup *group, BOOL *stopGroups) {
|
||||
if (group && (groupName == nil || [groupName isEqualToString:[group valueForProperty:ALAssetsGroupPropertyName]])) {
|
||||
|
||||
if (assetType == nil || [assetType isEqualToString:@"Photos"]) {
|
||||
[group setAssetsFilter:ALAssetsFilter.allPhotos];
|
||||
} else if ([assetType isEqualToString:@"Videos"]) {
|
||||
[group setAssetsFilter:ALAssetsFilter.allVideos];
|
||||
} else if ([assetType isEqualToString:@"All"]) {
|
||||
[group setAssetsFilter:ALAssetsFilter.allAssets];
|
||||
}
|
||||
|
||||
[group setAssetsFilter:assetType];
|
||||
[group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stopAssets) {
|
||||
if (result) {
|
||||
NSString *uri = ((NSURL *)[result valueForProperty:ALAssetPropertyAssetURL]).absoluteString;
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
|
||||
@implementation RCTImagePickerManager
|
||||
{
|
||||
NSMutableArray *_pickers;
|
||||
NSMutableArray *_pickerCallbacks;
|
||||
NSMutableArray *_pickerCancelCallbacks;
|
||||
NSMutableArray<UIImagePickerController *> *_pickers;
|
||||
NSMutableArray<RCTResponseSenderBlock> *_pickerCallbacks;
|
||||
NSMutableArray<RCTResponseSenderBlock> *_pickerCancelCallbacks;
|
||||
}
|
||||
|
||||
RCT_EXPORT_MODULE(ImagePickerIOS);
|
||||
@@ -42,7 +42,7 @@ RCT_EXPORT_MODULE(ImagePickerIOS);
|
||||
|
||||
RCT_EXPORT_METHOD(canRecordVideos:(RCTResponseSenderBlock)callback)
|
||||
{
|
||||
NSArray *availableMediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
|
||||
NSArray<NSString *> *availableMediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
|
||||
callback(@[@([availableMediaTypes containsObject:(NSString *)kUTTypeMovie])]);
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ RCT_EXPORT_METHOD(openCameraDialog:(NSDictionary *)config
|
||||
cancelCallback(@[@"Camera access is unavailable in an app extension"]);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
UIWindow *keyWindow = RCTSharedApplication().keyWindow;
|
||||
UIViewController *rootViewController = keyWindow.rootViewController;
|
||||
|
||||
@@ -86,7 +86,7 @@ RCT_EXPORT_METHOD(openSelectDialog:(NSDictionary *)config
|
||||
cancelCallback(@[@"Image picker is currently unavailable in an app extension"]);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
UIWindow *keyWindow = RCTSharedApplication().keyWindow;
|
||||
UIViewController *rootViewController = keyWindow.rootViewController;
|
||||
|
||||
@@ -94,7 +94,7 @@ RCT_EXPORT_METHOD(openSelectDialog:(NSDictionary *)config
|
||||
imagePicker.delegate = self;
|
||||
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
|
||||
|
||||
NSMutableArray *allowedTypes = [NSMutableArray new];
|
||||
NSMutableArray<NSString *> *allowedTypes = [NSMutableArray new];
|
||||
if ([config[@"showImages"] boolValue]) {
|
||||
[allowedTypes addObject:(NSString *)kUTTypeImage];
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ static NSDictionary *RCTPositionError(RCTPositionErrorCode code, NSString *msg /
|
||||
{
|
||||
CLLocationManager *_locationManager;
|
||||
NSDictionary *_lastLocationEvent;
|
||||
NSMutableArray *_pendingRequests;
|
||||
NSMutableArray<RCTLocationRequest *> *_pendingRequests;
|
||||
BOOL _observingLocation;
|
||||
RCTLocationOptions _observerOptions;
|
||||
}
|
||||
@@ -249,7 +249,8 @@ RCT_EXPORT_METHOD(getCurrentPosition:(RCTLocationOptions)options
|
||||
|
||||
#pragma mark - CLLocationManagerDelegate
|
||||
|
||||
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
|
||||
- (void)locationManager:(CLLocationManager *)manager
|
||||
didUpdateLocations:(NSArray<CLLocation *> *)locations
|
||||
{
|
||||
// Create event
|
||||
CLLocation *location = locations.lastObject;
|
||||
|
||||
@@ -42,8 +42,8 @@ RCT_EXPORT_MODULE()
|
||||
if (imageCount > 1) {
|
||||
|
||||
NSTimeInterval duration = 0;
|
||||
NSMutableArray *delays = [NSMutableArray arrayWithCapacity:imageCount];
|
||||
NSMutableArray *images = [NSMutableArray arrayWithCapacity:imageCount];
|
||||
NSMutableArray<NSNumber *> *delays = [NSMutableArray arrayWithCapacity:imageCount];
|
||||
NSMutableArray<id /* CGIMageRef */> *images = [NSMutableArray arrayWithCapacity:imageCount];
|
||||
for (size_t i = 0; i < imageCount; i++) {
|
||||
|
||||
CGImageRef imageRef = CGImageSourceCreateImageAtIndex(imageSource, i, NULL);
|
||||
@@ -75,7 +75,7 @@ RCT_EXPORT_MODULE()
|
||||
}
|
||||
CFRelease(imageSource);
|
||||
|
||||
NSMutableArray *keyTimes = [NSMutableArray arrayWithCapacity:delays.count];
|
||||
NSMutableArray<NSNumber *> *keyTimes = [NSMutableArray arrayWithCapacity:delays.count];
|
||||
NSTimeInterval runningDuration = 0;
|
||||
for (NSNumber *delayNumber in delays) {
|
||||
[keyTimes addObject:@(runningDuration / duration)];
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
|
||||
@implementation RCTImageLoader
|
||||
{
|
||||
NSArray *_loaders;
|
||||
NSArray *_decoders;
|
||||
NSArray<id<RCTImageURLLoader>> *_loaders;
|
||||
NSArray<id<RCTImageDataDecoder>> *_decoders;
|
||||
NSURLCache *_cache;
|
||||
}
|
||||
|
||||
@@ -47,14 +47,14 @@ RCT_EXPORT_MODULE()
|
||||
- (void)setBridge:(RCTBridge *)bridge
|
||||
{
|
||||
// Get image loaders and decoders
|
||||
NSMutableArray *loaders = [NSMutableArray array];
|
||||
NSMutableArray *decoders = [NSMutableArray array];
|
||||
NSMutableArray<id<RCTImageURLLoader>> *loaders = [NSMutableArray array];
|
||||
NSMutableArray<id<RCTImageDataDecoder>> *decoders = [NSMutableArray array];
|
||||
for (id<RCTBridgeModule> module in bridge.modules.allValues) {
|
||||
if ([module conformsToProtocol:@protocol(RCTImageURLLoader)]) {
|
||||
[loaders addObject:module];
|
||||
[loaders addObject:(id<RCTImageURLLoader>)module];
|
||||
}
|
||||
if ([module conformsToProtocol:@protocol(RCTImageDataDecoder)]) {
|
||||
[decoders addObject:module];
|
||||
[decoders addObject:(id<RCTImageDataDecoder>)module];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ RCT_EXPORT_MODULE()
|
||||
|
||||
- (BOOL)canHandleRequest:(NSURLRequest *)request
|
||||
{
|
||||
static NSSet *schemes = nil;
|
||||
static NSSet<NSString *> *schemes = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
// technically, RCTHTTPRequestHandler can handle file:// as well,
|
||||
|
||||
@@ -37,7 +37,7 @@ typedef RCTURLRequestCancellationBlock (^RCTHTTPQueryResult)(NSError *error, NSD
|
||||
|
||||
@implementation RCTHTTPFormDataHelper
|
||||
{
|
||||
NSMutableArray *_parts;
|
||||
NSMutableArray<NSDictionary *> *_parts;
|
||||
NSMutableData *_multipartBody;
|
||||
RCTHTTPQueryResult _callback;
|
||||
NSString *_boundary;
|
||||
@@ -122,7 +122,7 @@ static NSString *RCTGenerateFormBoundary()
|
||||
@implementation RCTNetworking
|
||||
{
|
||||
NSMutableDictionary *_tasksByRequestID;
|
||||
NSArray *_handlers;
|
||||
NSArray<id<RCTURLRequestHandler>> *_handlers;
|
||||
}
|
||||
|
||||
@synthesize bridge = _bridge;
|
||||
@@ -133,10 +133,10 @@ RCT_EXPORT_MODULE()
|
||||
- (void)setBridge:(RCTBridge *)bridge
|
||||
{
|
||||
// get handlers
|
||||
NSMutableArray *handlers = [NSMutableArray array];
|
||||
NSMutableArray<id<RCTURLRequestHandler>> *handlers = [NSMutableArray array];
|
||||
for (id<RCTBridgeModule> module in bridge.modules.allValues) {
|
||||
if ([module conformsToProtocol:@protocol(RCTURLRequestHandler)]) {
|
||||
[handlers addObject:module];
|
||||
[handlers addObject:(id<RCTURLRequestHandler>)module];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
referenceDirectory:@FB_REFERENCE_IMAGE_DIR \
|
||||
moduleProvider:(moduleProvider__)]
|
||||
|
||||
@protocol RCTBridgeModule;
|
||||
|
||||
@interface RCTTestRunner : NSObject
|
||||
|
||||
@property (nonatomic, assign) BOOL recordMode;
|
||||
@@ -37,7 +39,7 @@
|
||||
*/
|
||||
- (instancetype)initWithApp:(NSString *)app
|
||||
referenceDirectory:(NSString *)referenceDirectory
|
||||
moduleProvider:(NSArray *(^)(void))block NS_DESIGNATED_INITIALIZER;
|
||||
moduleProvider:(NSArray<id<RCTBridgeModule>> *(^)(void))block NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
/**
|
||||
* Simplest runTest function simply mounts the specified JS module with no
|
||||
|
||||
@@ -126,7 +126,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init)
|
||||
|
||||
RCTSetLogFunction(RCTDefaultLogFunction);
|
||||
|
||||
NSArray *nonLayoutSubviews = [vc.view.subviews filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id subview, NSDictionary *bindings) {
|
||||
NSArray<UIView *> *nonLayoutSubviews = [vc.view.subviews filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id subview, NSDictionary *bindings) {
|
||||
return ![NSStringFromClass([subview class]) isEqualToString:@"_UILayoutGuide"];
|
||||
}]];
|
||||
RCTAssert(nonLayoutSubviews.count == 0, @"There shouldn't be any other views: %@", nonLayoutSubviews);
|
||||
|
||||
@@ -80,7 +80,7 @@ static css_dim_t RCTMeasure(void *context, float width)
|
||||
[self dirtyText];
|
||||
}
|
||||
|
||||
- (NSDictionary *)processUpdatedProperties:(NSMutableSet *)applierBlocks
|
||||
- (NSDictionary *)processUpdatedProperties:(NSMutableSet<RCTApplierBlock> *)applierBlocks
|
||||
parentProperties:(NSDictionary *)parentProperties
|
||||
{
|
||||
parentProperties = [super processUpdatedProperties:applierBlocks
|
||||
@@ -99,7 +99,7 @@ static css_dim_t RCTMeasure(void *context, float width)
|
||||
}
|
||||
|
||||
- (void)applyLayoutNode:(css_node_t *)node
|
||||
viewsWithNewFrame:(NSMutableSet *)viewsWithNewFrame
|
||||
viewsWithNewFrame:(NSMutableSet<RCTShadowView *> *)viewsWithNewFrame
|
||||
absolutePosition:(CGPoint)absolutePosition
|
||||
{
|
||||
[super applyLayoutNode:node viewsWithNewFrame:viewsWithNewFrame absolutePosition:absolutePosition];
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
@implementation RCTText
|
||||
{
|
||||
NSTextStorage *_textStorage;
|
||||
NSMutableArray *_reactSubviews;
|
||||
NSMutableArray<UIView *> *_reactSubviews;
|
||||
CAShapeLayer *_highlightLayer;
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
[_reactSubviews removeObject:subview];
|
||||
}
|
||||
|
||||
- (NSArray *)reactSubviews
|
||||
- (NSArray<UIView *> *)reactSubviews
|
||||
{
|
||||
return _reactSubviews;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
@implementation RCTTextField
|
||||
{
|
||||
RCTEventDispatcher *_eventDispatcher;
|
||||
NSMutableArray *_reactSubviews;
|
||||
NSMutableArray<UIView *> *_reactSubviews;
|
||||
BOOL _jsRequestingFirstResponder;
|
||||
NSInteger _nativeEventCount;
|
||||
}
|
||||
@@ -92,7 +92,7 @@ static void RCTUpdatePlaceholder(RCTTextField *self)
|
||||
RCTUpdatePlaceholder(self);
|
||||
}
|
||||
|
||||
- (NSArray *)reactSubviews
|
||||
- (NSArray<UIView *> *)reactSubviews
|
||||
{
|
||||
// TODO: do we support subviews of textfield in React?
|
||||
// In any case, we should have a better approach than manually
|
||||
|
||||
@@ -65,7 +65,7 @@ RCT_EXPORT_SHADOW_PROPERTY(allowFontScaling, BOOL)
|
||||
continue;
|
||||
}
|
||||
|
||||
NSMutableArray *queue = [NSMutableArray arrayWithObject:rootView];
|
||||
NSMutableArray<RCTShadowView *> *queue = [NSMutableArray arrayWithObject:rootView];
|
||||
for (NSInteger i = 0; i < queue.count; i++) {
|
||||
RCTShadowView *shadowView = queue[i];
|
||||
RCTAssert([shadowView isTextDirty], @"Don't process any nodes that don't have dirty text");
|
||||
|
||||
@@ -60,11 +60,11 @@ extern NSString *const RCTSRHTTPResponseErrorKey;
|
||||
@property (nonatomic, readonly, copy) NSString *protocol;
|
||||
|
||||
// Protocols should be an array of strings that turn into Sec-WebSocket-Protocol.
|
||||
- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray<NSString *> *)protocols NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)initWithURLRequest:(NSURLRequest *)request;
|
||||
|
||||
// Some helper constructors.
|
||||
- (instancetype)initWithURL:(NSURL *)url protocols:(NSArray *)protocols;
|
||||
- (instancetype)initWithURL:(NSURL *)url protocols:(NSArray<NSString *> *)protocols;
|
||||
- (instancetype)initWithURL:(NSURL *)url;
|
||||
|
||||
// Delegate queue will be dispatch_main_queue by default.
|
||||
|
||||
@@ -186,7 +186,7 @@ typedef void (^data_callback)(RCTSRWebSocket *webSocket, NSData *data);
|
||||
dispatch_queue_t _delegateDispatchQueue;
|
||||
|
||||
dispatch_queue_t _workQueue;
|
||||
NSMutableArray *_consumers;
|
||||
NSMutableArray<RCTSRIOConsumer *> *_consumers;
|
||||
|
||||
NSInputStream *_inputStream;
|
||||
NSOutputStream *_outputStream;
|
||||
@@ -228,12 +228,12 @@ typedef void (^data_callback)(RCTSRWebSocket *webSocket, NSData *data);
|
||||
|
||||
BOOL _isPumping;
|
||||
|
||||
NSMutableSet *_scheduledRunloops;
|
||||
NSMutableSet<NSArray *> *_scheduledRunloops;
|
||||
|
||||
// We use this to retain ourselves.
|
||||
__strong RCTSRWebSocket *_selfRetain;
|
||||
|
||||
NSArray *_requestedProtocols;
|
||||
NSArray<NSString *> *_requestedProtocols;
|
||||
RCTSRIOConsumerPool *_consumerPool;
|
||||
}
|
||||
|
||||
@@ -244,7 +244,7 @@ static __strong NSData *CRLFCRLF;
|
||||
CRLFCRLF = [[NSData alloc] initWithBytes:"\r\n\r\n" length:4];
|
||||
}
|
||||
|
||||
- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols;
|
||||
- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray<NSString *> *)protocols;
|
||||
{
|
||||
RCTAssertParam(request);
|
||||
|
||||
@@ -271,7 +271,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)init)
|
||||
return [self initWithURL:URL protocols:nil];
|
||||
}
|
||||
|
||||
- (instancetype)initWithURL:(NSURL *)URL protocols:(NSArray *)protocols;
|
||||
- (instancetype)initWithURL:(NSURL *)URL protocols:(NSArray<NSString *> *)protocols;
|
||||
{
|
||||
NSURLRequest *request = URL ? [NSURLRequest requestWithURL:URL] : nil;
|
||||
return [self initWithURLRequest:request protocols:protocols];
|
||||
@@ -1456,7 +1456,7 @@ static const size_t RCTSRFrameHeaderOverhead = 32;
|
||||
@implementation RCTSRIOConsumerPool
|
||||
{
|
||||
NSUInteger _poolSize;
|
||||
NSMutableArray *_bufferedConsumers;
|
||||
NSMutableArray<RCTSRIOConsumer *> *_bufferedConsumers;
|
||||
}
|
||||
|
||||
- (instancetype)initWithBufferCapacity:(NSUInteger)poolSize;
|
||||
|
||||
Reference in New Issue
Block a user