On 2014-07-15, at 04:53 PM, Adam Light <acli...@gmail.com> wrote:

> Getting back to a thread from a few months ago....
> 
> 
> On Mon, Mar 24, 2014 at 3:57 PM, Jake Petroules 
> <jake.petrou...@petroules.com> wrote:
> 
> Pretty much the only thing you lose with ARC is that it's 64-bit only and 
> thus using it means waving goodbye to 32-bit Qt on OS X completely. I don't 
> know if this is a problem for anyone. There's also a selection of classes to 
> which zeroing weak references cannot be made at all, and this list has 
> changed from release to release.
> 
> 
> Have any final decisions been made on this matter?
> 
> Our Qt based application, which we hope to release next year, must be able to 
> be *both* 32 and 64 bit on Macintosh. This isn't due to hardware constraints 
> but because our application allows users to use 3rd party libraries for which 
> they often don't have the source code. Since the version of the application 
> we are currently shipping is 32-bit only on Macintosh, none of these 3rd 
> party libraries will function if we provide only a 64-bit version of our 
> application. This will make it much more difficult for our users to upgrade 
> when we release the new version, and that's something we'd like to avoid.
> 
> We'd like to plan to use Qt 5 for our application (instead of 4.8) but if it 
> soon won't be possible to build a 32-bit version we might have to stick with 
> Qt 4.8 (of course, that has problems of its own).
> 
> For what it's worth, we're OK dropping support for OSX 10.6, just not the 
> ability to build a 32-bit application.
> 
> Thanks
> 
> Adam
> _______________________________________________
> Development mailing list
> Development@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development

As I've mentioned before, I don't think dropping 32-bit support would gain much 
for Qt. In fact it's more work to drop it than simply keep it around.

For qtbase (and other modules probably have less): it's especially not worth it 
for only 96 Objective-C++ source files (and one Objective-C) comprising barely 
29k lines of code (compared to around 5300 files / 2m LOC for C/C++) - and 
remember, all but one of these files is Objective-C++, not pure Objective-C, so 
a good chunk of that 29k figure will just be C++, bringing the amount even 
lower:

find . -name '*.m' -o -name '*.mm'
./config.tests/mac/corewlan/corewlantest.mm
./examples/widgets/mac/qmaccocoaviewcontainer/main.mm
./examples/widgets/mac/qmacnativewidget/main.mm
./src/corelib/io/qfilesystemwatcher_fsevents.mm
./src/corelib/io/qstandardpaths_ios.mm
./src/corelib/io/qurl_mac.mm
./src/corelib/kernel/qcore_mac_objc.mm
./src/corelib/tools/qbytearray_mac.mm
./src/corelib/tools/qlocale_mac.mm
./src/corelib/tools/qstring_mac.mm
./src/corelib/tools/qtimezoneprivate_mac.mm
./src/gui/accessible/qaccessiblecache_mac.mm
./src/network/access/qnetworkreplynsurlconnectionimpl.mm
./src/platformsupport/cglconvenience/cglconvenience.mm
./src/platformsupport/clipboard/qmacmime.mm
./src/platformsupport/eventdispatchers/qeventdispatcher_cf.mm
./src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
./src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
./src/plugins/bearer/corewlan/qcorewlanengine.mm
./src/plugins/bearer/corewlan/qcorewlanengine_10_6.mm
./src/plugins/platforms/cocoa/main.mm
./src/plugins/platforms/cocoa/qcocoaaccessibility.mm
./src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
./src/plugins/platforms/cocoa/qcocoaapplication.mm
./src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
./src/plugins/platforms/cocoa/qcocoaautoreleasepool.mm
./src/plugins/platforms/cocoa/qcocoabackingstore.mm
./src/plugins/platforms/cocoa/qcocoaclipboard.mm
./src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm
./src/plugins/platforms/cocoa/qcocoacursor.mm
./src/plugins/platforms/cocoa/qcocoadrag.mm
./src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
./src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
./src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm
./src/plugins/platforms/cocoa/qcocoaglcontext.mm
./src/plugins/platforms/cocoa/qcocoahelpers.mm
./src/plugins/platforms/cocoa/qcocoainputcontext.mm
./src/plugins/platforms/cocoa/qcocoaintegration.mm
./src/plugins/platforms/cocoa/qcocoaintrospection.mm
./src/plugins/platforms/cocoa/qcocoakeymapper.mm
./src/plugins/platforms/cocoa/qcocoamenu.mm
./src/plugins/platforms/cocoa/qcocoamenubar.mm
./src/plugins/platforms/cocoa/qcocoamenuitem.mm
./src/plugins/platforms/cocoa/qcocoamenuloader.mm
./src/plugins/platforms/cocoa/qcocoamimetypes.mm
./src/plugins/platforms/cocoa/qcocoanativeinterface.mm
./src/plugins/platforms/cocoa/qcocoaprintdevice.mm
./src/plugins/platforms/cocoa/qcocoaprintersupport.mm
./src/plugins/platforms/cocoa/qcocoaservices.mm
./src/plugins/platforms/cocoa/qcocoasystemsettings.mm
./src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm
./src/plugins/platforms/cocoa/qcocoatheme.mm
./src/plugins/platforms/cocoa/qcocoawindow.mm
./src/plugins/platforms/cocoa/qmacclipboard.mm
./src/plugins/platforms/cocoa/qmultitouch_mac.mm
./src/plugins/platforms/cocoa/qnsview.mm
./src/plugins/platforms/cocoa/qnsviewaccessibility.mm
./src/plugins/platforms/cocoa/qnswindowdelegate.mm
./src/plugins/platforms/cocoa/qpaintengine_mac.mm
./src/plugins/platforms/cocoa/qprintengine_mac.mm
./src/plugins/platforms/ios/plugin.mm
./src/plugins/platforms/ios/qiosapplicationdelegate.mm
./src/plugins/platforms/ios/qiosapplicationstate.mm
./src/plugins/platforms/ios/qiosbackingstore.mm
./src/plugins/platforms/ios/qiosclipboard.mm
./src/plugins/platforms/ios/qioscontext.mm
./src/plugins/platforms/ios/qioseventdispatcher.mm
./src/plugins/platforms/ios/qiosglobal.mm
./src/plugins/platforms/ios/qiosinputcontext.mm
./src/plugins/platforms/ios/qiosintegration.mm
./src/plugins/platforms/ios/qiosplatformaccessibility.mm
./src/plugins/platforms/ios/qiosscreen.mm
./src/plugins/platforms/ios/qiosservices.mm
./src/plugins/platforms/ios/qiostheme.mm
./src/plugins/platforms/ios/qiosviewcontroller.mm
./src/plugins/platforms/ios/qioswindow.mm
./src/plugins/platforms/ios/quiaccessibilityelement.mm
./src/plugins/platforms/ios/quiview_textinput.mm
./src/printsupport/dialogs/qpagesetupdialog_mac.mm
./src/printsupport/dialogs/qprintdialog_mac.mm
./src/widgets/doc/snippets/macmainwindow.mm
./src/widgets/doc/snippets/qmacnativewidget/main.mm
./src/widgets/styles/qmacstyle_mac.mm
./src/widgets/util/qscroller_mac.mm
./src/widgets/widgets/qmaccocoaviewcontainer_mac.mm
./src/widgets/widgets/qmacnativewidget_mac.mm
./src/widgets/widgets/qmenu_mac.mm
./tests/auto/corelib/io/qurl/tst_qurl_mac.mm
./tests/auto/corelib/tools/qbytearray/tst_qbytearray_mac.mm
./tests/auto/corelib/tools/qstring/tst_qstring_mac.mm
./tests/auto/other/qaccessibilitymac/tst_qaccessibilitymac_helpers.mm
./tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog_mac_helpers.mm
./tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.mm
./tests/auto/widgets/widgets/qmenu/tst_qmenu_mac.mm
./tests/manual/cocoa/qmaccocoaviewcontainer/main.mm
./tests/manual/cocoa/qmaccocoaviewcontainer/TestMouseMovedNSView.m
./tests/manual/cocoa/qt_on_cocoa/main.mm

I'd be open to adding ARC *support* to Qt though. It wouldn't be much work, 
just replace all calls to retain, release with macros such as QT_OBJC_RETAIN, 
QT_OBJC_RELEASE, QT_OBJC_BRIDGE, QT_OBJC_STRONG, QT_OBJC_WEAK, etc. and then we 
can support both modes pretty easily. But... there's probably little point in 
doing this anyways since it would increase testing burden and virtually all the 
Objective-C code is internal to Qt. The little that is exposed through the API 
(primarily type conversions, NSString to QString etc.) has the appropriate 
memory management macros to work seamlessly with ARC. So, all in all, best to 
leave Qt as it is on the Objective-C front.
-- 
Jake Petroules - jake.petroules at petroules.com
Chief Technology Officer - Petroules Corporation
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to