From 8e884f8eee8eff209aab2996d552e13e47606106 Mon Sep 17 00:00:00 2001
From: lpw <812862340@qq.com>
Date: Sun, 28 Sep 2025 15:06:21 +0800
Subject: [PATCH] 提交版本 4.8.0
---
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