我有一个用3.1.3构建的静态库。我将它包含在一个应用程序中,我正在用3.2/4.0b2构建这个应用程序。
静态库包含一个uiviewcontroller子类,它在-in it中调用[super initwithnibname:nil bundle:nil]。
此方法依次调用_docommonsetup,这会损坏子类的ivar之一:
0x003a68e9 <+0014> pop %ebx
0x003a68ea <+0015> mov 0x8(%ebp),%esi
0x003a68ed <+0018> movl $0x1,0x8(%esp)
0x003a68f5 <+0026> mov 0x1d98327(%ebx),%eax
0x003a68fb <+0032> mov %eax,0x4(%esp)
0x003a68ff <+0036> mov %esi,(%esp)
0x003a6902 <+0039> call 0x20e5f52 <dyld_stub_objc_msgSend>
0x003a6907 <+0044> movl $0x44898000,0x70(%esi) <- corrupting subclass's ivar (setting it to 0x4489..)
我可以将静态库精细地用于使用3.0或3.1.3构建的应用程序。但是3.2和4.0会导致问题。
这应该有效吗,或者静态库只能在使用相同或更旧版本的sdk构建的应用程序中使用吗?