We are talking of Java, so the fact that some reference could be null is 
not already an error, indeed only if it is null at runtime there is NPE.
Unless something in the "compiled" XCode project does not like weak 
references (or things that can in theory be null) so it complains.
But this is at runtime, so it is complaining at runtime when that value is 
not null, at least not because of the app Java instructions, said that the 
same code with no modifications is perfectly running in the simulator and 
Android device and iOS real device.
I debugged in IntelliJ Idea and followed the pointers and they are not 
null. I knew it already, the instructions sequence is very simple, it is 
done on app startup and it is the same on every platform, no room for 
leaving any null pointer.

Otherwise I do not understand what you really mean. Please explain.
Regards

Il giorno lunedì 3 maggio 2021 alle 15:13:47 UTC+2 Steve Hannah ha scritto:

> > appData is a weak reference but nothing is null
>
> ((AppData)appData.get()).appVersion
>
> If appData is a weak reference, then appData.get() may be null.
>
>
>
> On Mon, May 3, 2021 at 6:01 AM 'P5music' via CodenameOne Discussions <
> [email protected]> wrote:
>
>> appVersion is just a string, appData is a weak reference but nothing is 
>> null, as I said the app works outside of the iOS simulator.
>> I think that it does not like weak references. 
>> What could be the cause of the NPE? Maybe those pointers? 
>> Maybe the weak reference is not created at all in the translated code 
>> (build bug)?
>> Regards
>> Il giorno lunedì 3 maggio 2021 alle 13:27:51 UTC+2 Steve Hannah ha 
>> scritto:
>>
>>> When running with the debugger (in Xcode) it will stop on these error.  
>>> When running normally, it "catches" them and proceeds.
>>>
>>> ((AppData)appData.get()).appVersion
>>>
>>> That doesn't look safe.  You say appData is a weak reference? Then get() 
>>> may return null?  Then the .appVersion will be an NPE, which is essentially 
>>> what you're seeing.
>>>
>>> On Sun, May 2, 2021 at 11:27 PM 'P5music' via CodenameOne Discussions <
>>> [email protected]> wrote:
>>>
>>>>
>>>> I compiled my app with maven and generated the iOS Xcode project.
>>>> When I run it into the iOS simulator (iPad 8th gen) I get this early 
>>>> error:
>>>> Thread 4: EXC_BAD_ACCESS (code=1, address=0x30)
>>>> at this instruction
>>>> return (*(struct 
>>>> obj__com_myapp_app_AppData*)__cn1T).com_myapp_app_AppData_appVersion;
>>>> Where only the .com_myapp_app_AppData_appVersion part is in red. The 
>>>> iOS build code is below.
>>>>
>>>> It happens at
>>>> ((AppData)appData.get()).appVersion
>>>> Inside AppJSONData class, that has a weak reference to the AppData 
>>>> instance.
>>>> That seems to be a CodenameOne internal problem, not of my app, because 
>>>> it does not happen either on the simulator, or on Android, or a real iOS 
>>>> device (32bit).
>>>> Am I right?
>>>> What’s happening. How can it be avoided? Should weak references be 
>>>> avoided? I think this one can be removed because it has the same app 
>>>> lifetime, but there are also others that are dynamic.
>>>> Also it can be something that is wrong in the CN1 maven system to be 
>>>> fixed.
>>>> Thanks in advance
>>>>
>>>> #include "com_myapp_app_AppData.h"
>>>> #include "com_myapp_app_AppData.h"
>>>> #include "com_myapp_app_AppJSONData.h"
>>>> #include "java_io_IOException.h"
>>>> #include "java_lang_NullPointerException.h"
>>>> #include "java_lang_String.h"
>>>> #include "java_lang_ref_WeakReference.h"
>>>> const struct clazz *base_interfaces_for_com_myapp_app_AppData[] = {};
>>>> struct clazz class__com_myapp_app_AppData = {
>>>>   DEBUG_GC_INIT &class__java_lang_Class, 999999, 0, 0, 0, 0, 
>>>> &__FINALIZER_com_myapp_app_AppData ,0 , &__GC_MARK_com_myapp_app_AppData,  
>>>> 0, cn1_class_id_com_myapp_app_AppData, "com.myapp.app.AppData", 0, 0, 0, 
>>>> JAVA_FALSE, &class__java_lang_Object, 
>>>> base_interfaces_for_com_myapp_app_AppData, 0, 0, 0
>>>> , 0, 0, 0, 0, 0, 0};
>>>>
>>>> JAVA_OBJECT get_field_com_myapp_app_AppData_appVersion(JAVA_OBJECT 
>>>> __cn1T) {
>>>>   return (*(struct 
>>>> obj__com_myapp_app_AppData*)__cn1T).com_myapp_app_AppData_appVersion;
>>>> }
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "CodenameOne Discussions" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/codenameone-discussions/c0d25bdf-85a4-4253-ade1-fcaed6c484dbn%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/codenameone-discussions/c0d25bdf-85a4-4253-ade1-fcaed6c484dbn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>
>>>
>>> -- 
>>> Steve Hannah
>>> Software Developer
>>> Codename One
>>> http://www.codenameone.com
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "CodenameOne Discussions" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/codenameone-discussions/0a3f4bbd-c6a1-49e9-90d5-738f88666ea4n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/codenameone-discussions/0a3f4bbd-c6a1-49e9-90d5-738f88666ea4n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
>
> -- 
> Steve Hannah
> Software Developer
> Codename One
> http://www.codenameone.com
>

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/3797eab7-0f25-404d-889a-74a54a996c4dn%40googlegroups.com.

Reply via email to