ios - Swift 4: XCode 9 Beta: Static factory method in Objective-C produces a valid object in Debugger, but NIL in the code -
i have following swift class:
class videofacedetectioncontroller: uiviewcontroller, ipvideoembeddercontroldelegate { var videoplayer: ipvideoembeddercontrol? // note, not weak reference ... then have method in objective-c (in referenced static library): generateplayer(), follows:
+ (ipvideoembeddercontrol*)generateplayer { ipvideoembeddercontrol* control = [ipload objectwithclass:[ipvideoembeddercontrol class] frombundle:[nsbundle bundlewithidentifier:videoframeworkbundleid]]; control.provider = [ipvideoplaybackfactory getprovider]; [control createembeddingview]; return control; } i call in swift 4 so:
videoplayer? = ipvideoembeddercontrol.generateplayer() videoplayer?.translatesautoresizingmaskintoconstraints = false; now put breakpoint on second line (translatesauto....), , inspect videoplayer. it's nil.
now po ipvideoembeddercontrol.generateplayer() in console, , produces valid instance, has frame:
(lldb) po ipvideoembeddercontrol.generateplayer() ▿ optional<ipvideoembeddercontrol> (lldb) po ipvideoembeddercontrol.generateplayer().description "<ipvideoembeddercontrol: 0x7faf88c19390; baseclass = uicontrol; frame = (0 0; 320 349); autoresize = w+h; layer = <calayer: 0x60c0002265c0>>" so how can in debugger, valid object produced , returned, in code, nil value returned same exact method?
i'm using xcode beta 9.0 (release 5), ipad air 2 (ios 11) simulator. can't verify on physical devices right now, because don't have running ios 11 yet.
if line not typo , use in app, not work expect:
videoplayer? = ipvideoembeddercontrol.generateplayer() try changing line to:
videoplayer = ipvideoembeddercontrol.generateplayer() you know next line sort of optional chaining.
videoplayer?.translatesautoresizingmaskintoconstraints = false; when videoplayer nil, rest of line safely ignored , nothing.
all same in first line:
videoplayer? = ipvideoembeddercontrol.generateplayer() when videoplayer nil, rest of line safely ignored , nothing.
Comments
Post a Comment