@@ -40,6 +40,8 @@ enum BridgeError: Error {
40
40
public var scheme : String
41
41
// Whether the app is active
42
42
private var isActive = true
43
+ // Wheter to inject the Cordova files
44
+ private var injectCordovaFiles = false
43
45
44
46
// Background dispatch queue for plugin calls
45
47
public var dispatchQueue = DispatchQueue ( label: " bridge " )
@@ -207,16 +209,6 @@ enum BridgeError: Error {
207
209
* their JS.
208
210
*/
209
211
func setupCordovaCompatibility( ) {
210
- var injectCordovaFiles = false
211
- var numClasses = UInt32 ( 0 ) ;
212
- let classes = objc_copyClassList ( & numClasses)
213
- for i in 0 ..< Int ( numClasses) {
214
- let c : AnyClass = classes![ i]
215
- if class_getSuperclass ( c) == CDVPlugin . self {
216
- injectCordovaFiles = true
217
- break
218
- }
219
- }
220
212
if injectCordovaFiles {
221
213
exportCordovaJS ( )
222
214
registerCordovaPlugins ( )
@@ -246,20 +238,29 @@ enum BridgeError: Error {
246
238
* Register all plugins that have been declared
247
239
*/
248
240
func registerPlugins( ) {
249
- var numClasses = UInt32 ( 0 ) ;
250
- let classes = objc_copyClassList ( & numClasses)
241
+ let classCount = objc_getClassList ( nil , 0 )
242
+ let classes = UnsafeMutablePointer< AnyClass?> . allocate( capacity: Int ( classCount) )
243
+
244
+ let releasingClasses = AutoreleasingUnsafeMutablePointer < AnyClass > ( classes)
245
+ let numClasses : Int32 = objc_getClassList ( releasingClasses, classCount)
246
+
251
247
for i in 0 ..< Int ( numClasses) {
252
- let c : AnyClass = classes![ i]
253
- if class_conformsToProtocol ( c, CAPBridgedPlugin . self) {
254
- let pluginClassName = NSStringFromClass ( c)
255
- let pluginType = c as! CAPPlugin . Type
256
- let bridgeType = c as! CAPBridgedPlugin . Type
257
-
258
- registerPlugin ( pluginClassName, bridgeType. jsName ( ) , pluginType)
248
+ if let c: AnyClass = classes [ i] {
249
+ if class_getSuperclass ( c) == CDVPlugin . self {
250
+ injectCordovaFiles = true
251
+ }
252
+ if class_conformsToProtocol ( c, CAPBridgedPlugin . self) {
253
+ let pluginClassName = NSStringFromClass ( c)
254
+ let pluginType = c as! CAPPlugin . Type
255
+ let bridgeType = c as! CAPBridgedPlugin . Type
256
+
257
+ registerPlugin ( pluginClassName, bridgeType. jsName ( ) , pluginType)
258
+ }
259
259
}
260
260
}
261
+ classes. deallocate ( )
261
262
}
262
-
263
+
263
264
/**
264
265
* Register a single plugin.
265
266
*/
0 commit comments