هل يمكنك الرجوع إلى ملفات Xib من المكتبات الثابتة على iPhone؟

StackOverflow https://stackoverflow.com/questions/707429

  •  22-08-2019
  •  | 
  •  

سؤال

في تطبيقي، قمت حاليًا بفصل جميع التعليمات البرمجية الخاصة بي في مكتبة ثابتة، لتسهيل إعداد أهداف مشروع xcode للتطبيق الفعلي ولاختبارات الوحدة للتعليمات البرمجية الخاصة بي.تكمن المشكلة في ذلك في أنني أريد وضع معظم ملفات xib الخاصة بي في المكتبة الثابتة أيضًا، ولكن يبدو أنه عندما أقوم بتشغيل تطبيقي وأحاول الإشارة إلى xib، لا يمكن العثور عليه إلا إذا تم تضمينه في المكتبة الفعلية هدف التطبيق بدلاً من هدف المكتبة الثابتة.هل من الممكن تضمين ملفات xib وموارد أخرى في المكتبات الثابتة التي يمكن الرجوع إليها عن طريق التعليمات البرمجية الموجودة في نفس المكتبة، وإذا كان الأمر كذلك، فكيف؟

هل كانت مفيدة؟

المحلول

لا ليس من الممكن، لأن مكتبة ثابتة ليست هي نفسها ك "حزمة".

وهناك حزمة هو الدليل الذي قد يحتوي على جميع أنواع الملفات بما فيها ملفات الموارد (xib)، الملفات القابلة للتنفيذ والمكتبات ثابتة. كان موجودا على الملفات على أنها مجموعة من الملفات الفردية.

مكتبة ثابتة عبارة عن ملف واحد يحتوي على الطبقات، ورمز والمتغيرات التي تم ربطها معا من قبل الخالق مكتبة. أنه "لا تحتوي على" ملفات أخرى، هو أساسا قاعدة بيانات من التعليمات البرمجية المترجمة.

وعلى الرغم من أنه من الممكن وضع البيانات للxibs هناك، كسكودي لن يكون لها أي وسيلة لمعرفة أن كان هناك، كما يبدو لهم كملفات الفردية على نظام الملفات.

في نظام التشغيل ماك، يمكنك إنشاء "إطار" التي هي في جوهرها حزمة من التعليمات البرمجية والموارد والإعدادات وغيرها التي يمكن إعادة استخدامها في مشاريع متعددة. ومع ذلك، وأبل لا يبدو لدعم إنشاء إطار مخصص لنظام التشغيل اي فون.

وحزم <وأ href = "https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1" يختلط = " noreferrer نوفولو "> https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

والمكتبات ثابت http://en.wikipedia.org/wiki/Static_library

نصائح أخرى

الرد على التعليق (لن يتم وضعه في مربع التعليق)

لا تقلق، لقد كنت أحاول أن أفعل نفس الشيء تقريبًا الذي فعلته خلال الأسبوع الماضي - أرغب في إرسال "إطار عمل" من xibs، ويتضمن ملفات و.a libs إلى العميل دون إعطائه كل المصدر شفرة.لم أتمكن من العثور على طريقة جيدة للقيام بذلك باستخدام الحزم أيضًا.

لأي سبب من الأسباب، أصبحت شركة Apple منفرجة بشكل خاص بشأن هذا الأمر - لا أستطيع أن أرى سببًا يجعلها كذلك في حالة المكتبات الثابتة (المكتبات الديناميكية عادلة بدرجة كافية).

الحل الخاص بي الآن هو إنشاء مجلد حزمة "Foo" يدويًا والذي يحتوي على المجلدات الفرعية التالية:

  1. "تضمين" -> ضع ملفات .h هنا
  2. "res" -> ضع ملفات .xib هنا
  3. "lib" -> يحتوي على مجلدين فرعيين "iphoneos" و"iphonesimulator" يحتوي كل منهما على libFoo.a

ثم قم بضغط هذا وإرساله إلى العميل.العميل إذن:

  1. يفك ضغط الحزمة في أي وقت يريدون.
  2. يضيف المجلد "res" ضمن مجموعة الموارد.
  3. يغير إعدادات الهدف التالية:
    إشارات الرابط الأخرى = -Objc -lfoo
    مسارات البحث في الرأس = /include
    مسارات البحث في المكتبة = /lib/$(PLATFORM_NAME)

ربما يمكنني أتمتة عملية إنشاء الحزمة من خلال بعض خطوات البناء من ناحيتي، لكن العميل عالق في أربع خطوات غير دقيقة قليلاً للإعداد.

ولقد وجدت الحل الأمثل لهذا أن يفعل كل ما سبق تلقائيا وأكثر https://github.com/kstenerud/iOS-Universal-Framework في البرنامج المساعد كسكودي

وعملت بالنسبة لي مثل السحر، أنها لا تعمل إلا لكسكودي 4 وما فوق

ونعم يمكنك ذلك. إضافة ملف xib في المكتبة كما تفعل لأي مشروع عادي. ثم في هدف مشروع مكتبة إضافة الملف xib في قسم الملفات نسخة جنبا إلى جنب مع اللا الملف. في المشروع الرئيسي الخاص بك حيث كنت تستخدم مكتبة، وسحب وإسقاط الملفات xib حيث يقع اللا ملف المكتبة.

عند توزيع هل يمكن أيضا إنشاء SDK. لم JSON.framework هذا في SVN بهم، وأنا بنجاح تكرار ذلك. يمكنك أن ترى كيف تم ذلك في http://hltypes.svn.sf.net/ في وhltypes-ios.xcodeproj والمجلد دائرة الرقابة الداخلية في المشروع.

وفي المقام الأول تحتاج إلى "تثبيت" في مجلد الإنشاء الخاصة بك، ومن ثم تحتاج إلى نسخ SDKSettings.plist منسق بشكل خاص. قم بإضافة المسار إلى SDK إلى "تطوير البرامج إضافية" القائمة في المشروع التطبيق. الجانب السلبي من تطوير البرامج المركبة هي الحاجة إلى إعادة تشغيل كسكودي 3.X كلما تم تحديث هذا مصغرة SDK، وإصرار كسكودي على بناء SDK مركب تم إنشاؤها من SDK قاعدة آبل ومصغرة SDK الخاص بك (الذي يعني أنك في حاجة إلى الانتظار قليلا جدا) .

ومشروع تطبيق ما زال يحتاج إلى .xib وغيرها من الموارد إضافتها يدويا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top