From 8f01f54b953653ea7e9c2c4b796135978acaa5d1 Mon Sep 17 00:00:00 2001 From: lpw Date: Wed, 26 Jun 2024 17:07:02 +0800 Subject: [PATCH] 提交2.9.1 --- frameworks/FMDB.framework/Headers/FMDatabasePool.h | 204 +++++++++++++++++++++++++++++++++++--------------- 1 files changed, 142 insertions(+), 62 deletions(-) diff --git a/frameworks/FMDB.framework/Headers/FMDatabasePool.h b/frameworks/FMDB.framework/Headers/FMDatabasePool.h index 1915858..341c05f 100755 --- a/frameworks/FMDB.framework/Headers/FMDatabasePool.h +++ b/frameworks/FMDB.framework/Headers/FMDatabasePool.h @@ -8,18 +8,20 @@ #import <Foundation/Foundation.h> +NS_ASSUME_NONNULL_BEGIN + @class FMDatabase; -/** Pool of `<FMDatabase>` objects. +/** Pool of @c FMDatabase objects. - ### See also + See also - - `<FMDatabaseQueue>` - - `<FMDatabase>` + - @c FMDatabaseQueue + - @c FMDatabase - @warning Before using `FMDatabasePool`, please consider using `<FMDatabaseQueue>` instead. + @warning Before using @c FMDatabasePool , please consider using @c FMDatabaseQueue instead. - If you really really really know what you're doing and `FMDatabasePool` is what + If you really really really know what you're doing and @c FMDatabasePool is what you really really need (ie, you're using a read only database), OK you can use it. But just be careful not to deadlock! @@ -28,27 +30,15 @@ in the main.m file. */ -@interface FMDatabasePool : NSObject { - NSString *_path; - - dispatch_queue_t _lockQueue; - - NSMutableArray *_databaseInPool; - NSMutableArray *_databaseOutPool; - - __unsafe_unretained id _delegate; - - NSUInteger _maximumNumberOfDatabasesToCreate; - int _openFlags; -} +@interface FMDatabasePool : NSObject /** Database path */ -@property (atomic, retain) NSString *path; +@property (atomic, copy, nullable) NSString *path; /** Delegate object */ -@property (atomic, assign) id delegate; +@property (atomic, unsafe_unretained, nullable) id delegate; /** Maximum number of databases to create */ @@ -58,73 +48,140 @@ @property (atomic, readonly) int openFlags; +/** Custom virtual file system name */ + +@property (atomic, copy, nullable) NSString *vfsName; + ///--------------------- /// @name Initialization ///--------------------- /** Create pool using path. - + @param aPath The file path of the database. - - @return The `FMDatabasePool` object. `nil` on error. + + @return The @c FMDatabasePool object. @c nil on error. */ -+ (instancetype)databasePoolWithPath:(NSString*)aPath; ++ (instancetype)databasePoolWithPath:(NSString * _Nullable)aPath; + +/** Create pool using file URL. + + @param url The file @c NSURL of the database. + + @return The @c FMDatabasePool object. @c nil on error. + */ + ++ (instancetype)databasePoolWithURL:(NSURL * _Nullable)url; /** Create pool using path and specified flags - + @param aPath The file path of the database. - @param openFlags Flags passed to the openWithFlags method of the database - - @return The `FMDatabasePool` object. `nil` on error. + @param openFlags Flags passed to the openWithFlags method of the database. + + @return The @c FMDatabasePool object. @c nil on error. */ -+ (instancetype)databasePoolWithPath:(NSString*)aPath flags:(int)openFlags; ++ (instancetype)databasePoolWithPath:(NSString * _Nullable)aPath flags:(int)openFlags; + +/** Create pool using file URL and specified flags + + @param url The file @c NSURL of the database. + @param openFlags Flags passed to the openWithFlags method of the database. + + @return The @c FMDatabasePool object. @c nil on error. + */ + ++ (instancetype)databasePoolWithURL:(NSURL * _Nullable)url flags:(int)openFlags; /** Create pool using path. - + @param aPath The file path of the database. - - @return The `FMDatabasePool` object. `nil` on error. + + @return The @c FMDatabasePool object. @c nil on error. */ -- (instancetype)initWithPath:(NSString*)aPath; +- (instancetype)initWithPath:(NSString * _Nullable)aPath; + +/** Create pool using file URL. + + @param url The file `NSURL of the database. + + @return The @c FMDatabasePool object. @c nil on error. + */ + +- (instancetype)initWithURL:(NSURL * _Nullable)url; /** Create pool using path and specified flags. - + @param aPath The file path of the database. @param openFlags Flags passed to the openWithFlags method of the database - - @return The `FMDatabasePool` object. `nil` on error. + + @return The @c FMDatabasePool object. @c nil on error. */ -- (instancetype)initWithPath:(NSString*)aPath flags:(int)openFlags; +- (instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags; + +/** Create pool using file URL and specified flags. + + @param url The file @c NSURL of the database. + @param openFlags Flags passed to the openWithFlags method of the database + + @return The @c FMDatabasePool object. @c nil on error. + */ + +- (instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags; + +/** Create pool using path and specified flags. + + @param aPath The file path of the database. + @param openFlags Flags passed to the openWithFlags method of the database + @param vfsName The name of a custom virtual file system + + @return The @c FMDatabasePool object. @c nil on error. + */ + +- (instancetype)initWithPath:(NSString * _Nullable)aPath flags:(int)openFlags vfs:(NSString * _Nullable)vfsName; + +/** Create pool using file URL and specified flags. + + @param url The file @c NSURL of the database. + @param openFlags Flags passed to the openWithFlags method of the database + @param vfsName The name of a custom virtual file system + + @return The @c FMDatabasePool object. @c nil on error. + */ + +- (instancetype)initWithURL:(NSURL * _Nullable)url flags:(int)openFlags vfs:(NSString * _Nullable)vfsName; + +/** Returns the Class of 'FMDatabase' subclass, that will be used to instantiate database object. + + Subclasses can override this method to return specified Class of 'FMDatabase' subclass. + + @return The Class of 'FMDatabase' subclass, that will be used to instantiate database object. + */ + ++ (Class)databaseClass; ///------------------------------------------------ /// @name Keeping track of checked in/out databases ///------------------------------------------------ /** Number of checked-in databases in pool - - @returns Number of databases */ -- (NSUInteger)countOfCheckedInDatabases; +@property (nonatomic, readonly) NSUInteger countOfCheckedInDatabases; /** Number of checked-out databases in pool - - @returns Number of databases */ -- (NSUInteger)countOfCheckedOutDatabases; +@property (nonatomic, readonly) NSUInteger countOfCheckedOutDatabases; /** Total number of databases in pool - - @returns Number of databases */ -- (NSUInteger)countOfOpenDatabases; +@property (nonatomic, readonly) NSUInteger countOfOpenDatabases; /** Release all databases in pool */ @@ -136,35 +193,57 @@ /** Synchronously perform database operations in pool. - @param block The code to be run on the `FMDatabasePool` pool. + @param block The code to be run on the @c FMDatabasePool pool. */ -- (void)inDatabase:(void (^)(FMDatabase *db))block; +- (void)inDatabase:(__attribute__((noescape)) void (^)(FMDatabase *db))block; /** Synchronously perform database operations in pool using transaction. + + @param block The code to be run on the @c FMDatabasePool pool. + + @warning Unlike SQLite's `BEGIN TRANSACTION`, this method currently performs + an exclusive transaction, not a deferred transaction. This behavior + is likely to change in future versions of FMDB, whereby this method + will likely eventually adopt standard SQLite behavior and perform + deferred transactions. If you really need exclusive tranaction, it is + recommended that you use `inExclusiveTransaction`, instead, not only + to make your intent explicit, but also to future-proof your code. + */ - @param block The code to be run on the `FMDatabasePool` pool. +- (void)inTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; + +/** Synchronously perform database operations in pool using exclusive transaction. + + @param block The code to be run on the @c FMDatabasePool pool. */ -- (void)inTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block; +- (void)inExclusiveTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations in pool using deferred transaction. - @param block The code to be run on the `FMDatabasePool` pool. + @param block The code to be run on the @c FMDatabasePool pool. */ -- (void)inDeferredTransaction:(void (^)(FMDatabase *db, BOOL *rollback))block; +- (void)inDeferredTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; + +/** Synchronously perform database operations on queue, using immediate transactions. + + @param block The code to be run on the queue of @c FMDatabaseQueue + */ + +- (void)inImmediateTransaction:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; /** Synchronously perform database operations in pool using save point. - @param block The code to be run on the `FMDatabasePool` pool. + @param block The code to be run on the @c FMDatabasePool pool. - @return `NSError` object if error; `nil` if successful. + @return @c NSError object if error; @c nil if successful. - @warning You can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. If you need to nest, use `<[FMDatabase startSavePointWithName:error:]>` instead. + @warning You can not nest these, since calling it will pull another database out of the pool and you'll get a deadlock. If you need to nest, use @c startSavePointWithName:error: instead. */ -- (NSError*)inSavePoint:(void (^)(FMDatabase *db, BOOL *rollback))block; +- (NSError * _Nullable)inSavePoint:(__attribute__((noescape)) void (^)(FMDatabase *db, BOOL *rollback))block; @end @@ -178,10 +257,10 @@ /** Asks the delegate whether database should be added to the pool. - @param pool The `FMDatabasePool` object. - @param database The `FMDatabase` object. + @param pool The @c FMDatabasePool object. + @param database The @c FMDatabase object. - @return `YES` if it should add database to pool; `NO` if not. + @return @c YES if it should add database to pool; @c NO if not. */ @@ -189,8 +268,8 @@ /** Tells the delegate that database was added to the pool. - @param pool The `FMDatabasePool` object. - @param database The `FMDatabase` object. + @param pool The @c FMDatabasePool object. + @param database The @c FMDatabase object. */ @@ -198,3 +277,4 @@ @end +NS_ASSUME_NONNULL_END -- Gitblit v1.8.0