2012-04-07 35 views
10

bazı dikkatli ayıklama sonra, bir arabası Elma paket yükleme sistemi çerçevelerinde yatmaktadır benim uygulamada bir hata keşfettiler ve birçok uygulama olduğundan şüpheliyim. Aslında, paketin Çöp Toplama uyumlu olmadığı için Xcode'un kendisini Xcode'un bellek alanına yükleyemeyeceğini öğrendim.Mac OS X uygulaması, dlopen'in kitaplığı yüklemesini engelleyebilir mi? ,</p> <pre class="lang-none prettyprint-override"><code>/System/Library/CoreServices/MLTEFile.bundle </code></pre> <p>Ben bu paketin hizmetlerinden yararlanan değilim eminim:

Bu nedenle, ideal olarak, bu paketin uygulamanıza da yüklenmesini önlemek istiyorum. Bunu yapmanın bir yolu, kendi uygulamamda GC'yi gerektirmektir, ancak bunu yapmak üzereyim. Bu kütüphanede dlopen() numaralı telefonu aramak için sistem çerçevelerinden girişimleri atlatmanın bir yolu var mı?

+0

Apple mühendislerinin bununla ilgili sorunların neler olduğunu bilmek istediklerini düşünüyorum. Sesler * süper * - garip. Hata bildirme şansı bulduğunuzda (Açık) Radar'a bir bağlantı gönderin! – cbowns

cevap

6

Twitter'daki birtakım yararlı yanıtlar sayesinde, dyld'ın "aracı" özelliğini potansiyel bir çözüm olarak sunabiliyorum. "Bağımlı Kütüphanelerde interposing Fonksiyonlar" Ara: Burada

https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/UsingDynamicLibraries.html#//apple_ref/doc/uid/TP40002182-SW10

Kısa örnek:

http://toves.freeshell.org/interpose/

Ve burada interposes ilan için basitleştirilmiş makro:

http://www.opensource.apple.com/source/dyld/dyld-97.1/include/mach-o/dyld-interposing.h

Çeşitli yaklaşıma göre biraz kafam karıştı burada gösterildi. DYLD isim tablosunda _interpose arzusunun reklamı için bir mekanizma ve orijinaline zincirlemek için dlsym (RTLD_NEXT,…) kullanmaya dayanan tamamen (?) Farklı bir mekanizmanın var olduğu görülmektedir. Apple'ın indirilebilir örneğinde (ilk dokümantasyon bağlantısından), dlsym tekniğini kullanırlar, ancak bu, dolaylı olarak arabuluculuğun ortaya çıkmasına neden olursa, benim için açık değildir.