@@ -125,14 +125,17 @@ void addProtocol(napi_env env, ObjCBridgeData *bridgeData, Class cls,
125125extern char name_buf[512 ];
126126
127127void ObjCBridgeData::registerClass (napi_env env, napi_value constructor) {
128- napi_value classExternal, prototype, registered;
129- napi_get_named_property (env, constructor, " __class__" , &classExternal);
128+ napi_value prototype;
130129 napi_get_named_property (env, constructor, " prototype" , &prototype);
131130
131+ napi_value superConstructor;
132+ napi_get_prototype (env, constructor, &superConstructor);
132133 Class superClassNative = nullptr ;
133- napi_get_value_external (env, classExternal , (void **)&superClassNative);
134+ napi_unwrap (env, superConstructor , (void **)&superClassNative);
134135
135136 if (superClassNative == nullptr ) {
137+ // If the class does not inherit from a native class,
138+ // by default it inherits from NSObject.
136139 superClassNative = [NSObject class ];
137140 }
138141
@@ -152,18 +155,9 @@ void addProtocol(napi_env env, ObjCBridgeData *bridgeData, Class cls,
152155
153156 napi_value properties;
154157
155- napi_value jsGlobal, jsObject, jsObjectGetOwnPropertyNames;
156- napi_get_global (env, &jsGlobal);
157- napi_get_named_property (env, jsGlobal, " Object" , &jsObject);
158- napi_get_named_property (env, jsObject, " getOwnPropertyNames" ,
159- &jsObjectGetOwnPropertyNames);
160-
161- napi_call_function (env, jsObject, jsObjectGetOwnPropertyNames, 1 , &prototype,
162- &properties);
163-
164- // napi_get_all_property_names(env, prototype, napi_key_own_only,
165- // napi_key_skip_symbols,
166- // napi_key_numbers_to_strings, &properties);
158+ napi_get_all_property_names (env, prototype, napi_key_own_only,
159+ napi_key_skip_symbols,
160+ napi_key_numbers_to_strings, &properties);
167161
168162 uint32_t propertyCount = 0 ;
169163 napi_get_array_length (env, properties, &propertyCount);
@@ -180,12 +174,9 @@ void addProtocol(napi_env env, ObjCBridgeData *bridgeData, Class cls,
180174 napi_get_named_property (env, constructor, " ObjCExposedMethods" ,
181175 &exposedMethods);
182176
183- // napi_get_all_property_names(
184- // env, exposedMethods, napi_key_own_only, napi_key_skip_symbols,
185- // napi_key_numbers_to_strings, &exposedMethodNames);
186-
187- napi_call_function (env, jsObject, jsObjectGetOwnPropertyNames, 1 ,
188- &exposedMethods, &exposedMethodNames);
177+ napi_get_all_property_names (
178+ env, exposedMethods, napi_key_own_only, napi_key_skip_symbols,
179+ napi_key_numbers_to_strings, &exposedMethodNames);
189180
190181 uint32_t exposedMethodCount = 0 ;
191182 napi_get_array_length (env, exposedMethodNames, &exposedMethodCount);
@@ -284,17 +275,8 @@ void addProtocol(napi_env env, ObjCBridgeData *bridgeData, Class cls,
284275
285276 classesByPointer[cls] = bridgedClass;
286277
287- void *alreadyWrapped;
288- napi_unwrap (env, constructor, &alreadyWrapped);
289- if (alreadyWrapped != nullptr ) {
290- napi_remove_wrap (env, constructor, &alreadyWrapped);
291- }
292278 napi_wrap (env, constructor, (void *)cls, nullptr , nullptr , nullptr );
293279
294- napi_value external;
295- napi_create_external (env, (void *)cls, nullptr , nullptr , &external);
296- napi_set_named_property (env, constructor, " __class__" , external);
297-
298280 napi_value jsTrue;
299281 napi_get_boolean (env, true , &jsTrue);
300282 napi_set_named_property (env, constructor, " __objc_msgSendSuper__" , jsTrue);
0 commit comments