That approach is not supported and will crash at runtime in some circumstances. Nobody has tried to make a list of precisely which cases will and will not work, so you're on your own here.
For example, if you code has a category on NSTableCellView then it will crash. If your subclass of NSTableCellView has a +load method then it will probably crash. If you call [MyNSTableCellView class] then it might crash. Et cetera. > On Nov 8, 2014, at 10:09 AM, Satyanarayana Chebrolu > <satyanaraya...@ivycomptech.com> wrote: > > Thanks Greg for your suggestions. > > But I found something from > https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPF > rameworks/Concepts/WeakLinking.html > I have tried the way mentioned in that, so passed "-weak_framework Appkit² > in Other Linker Flags under Build Settings of the framework(X.framework) > target. It worked on 10.5 and 10.6 as well. > > Attached a screenshot for the same. > > Greg, as its working in the above approach, I can go ahead with it instead > of having separate bundle, then loading it after OS validation.. Etc. > Can you put some light on it and any thoughts on the final approach. > > > Thanks, > Satya > > On 11/8/14, 12:14 AM, "Greg Parker" <gpar...@apple.com> wrote: > >> >>> On Nov 7, 2014, at 3:54 AM, Satyanarayana Chebrolu >>> <satyanaraya...@ivycomptech.com> wrote: >>> >>> Hi folks, >>> We have an application, which is supporting from 10.5(Leopard) to >>> 10.10(Yosemite). Inside the application, there is a custom >>> framework(X.framework), which has some custom code for Appkit classes. >>> Off late, decided to introduce a new feature, which will be supported >>> from 10.7 to 10.10. And then subclassed the classes (NSTableRowView, >>> NSTableCellView), which are part of the X.framework. >>> >>> Problem: >>> The app is getting crashed when we launch it on 10.5 and 10.6 machines >>> saying that ³dyld: Symbol not found: _OBJC_CLASS_$_NSTableCellView². >>> >>> Understand that NSTableRowView, NSTableCellView are not existing on >>> 10.5 and 10.6, so the subclasses should be weakly linked. >> >> Weak import of Objective-C symbols does not work on 10.5 and 10.6. The >> runtime support for it was introduced in 10.6.8. >> >> One solution is to drop support for OS versions older than 10.6.8. >> >> Another solution is to use dynamic framework loading to keep the code >> that uses NSTableCellView out of your process when the OS is too old. You >> would perform an OS version check and use NSBundle or dlopen to load your >> framework if the OS version is new enough. This works for anything. >> >> Another solution is to use NSClassFromString(@"NSTableCellView") and >> never access the class directly. This works for classes that you use but >> do not subclass; it does not work if you need to subclass a class. >> >> It is possible to create a subclass dynamically at runtime, after >> performing an OS version check. This is typically feasible only in simple >> cases. >> >> >> -- >> Greg Parker gpar...@apple.com Runtime Wrangler >> >> > > This email and any attachments are confidential, and may be legally > privileged and protected by copyright. If you are not the intended recipient > dissemination or copying of this email is prohibited. If you have received > this in error, please notify the sender by replying by email and then delete > the email completely from your system. Any views or opinions are solely those > of the sender. This communication is not intended to form a binding contract > unless expressly indicated to the contrary and properly authorised. Any > actions taken on the basis of this email are at the recipient's own risk. > <weaklinking.png> _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com