এক্সকোড 4-তে ফ্রেমওয়ার্ক এবং স্ট্যাটিক লাইব্রেরির মধ্যে পার্থক্য এবং কীভাবে তাদের কল করা যায়


133

আমি এক্সকোড এবং উদ্দেশ্য-সি-তে বেশ নতুন quite আমি একটি খুব বেসিক প্রশ্ন জিজ্ঞাসা করতে চান।

আমি দেখেছি যখন প্রকল্পের সেটিংগুলিতে "লাইব্রেরিতে বাইনারি সংযুক্ত করার" সময়, কর্মক্ষেত্রের অন্যান্য প্রকল্পগুলি থেকে আমদানিকৃত কাঠামো এবং গ্রন্থাগারগুলি সম্পর্কে পার্থক্য রয়েছে।

প্রথম প্রশ্ন, কেন একটি কাঠামো আছে? এবং কেন একটি গ্রন্থাগার আছে? আমার লাইব্রেরি একটি কাঠামো হতে পারে না?

এবং তারপরে একটি .h ফাইল থেকে আমি কীভাবে আমার আমদানি করা স্ট্যাটিক লাইব্রেরি থেকে ক্লাস কল করতে পারি?

আমি মনে করি অবশ্যই একটি উপসর্গ থাকতে হবে, কিন্তু আমি এটি খুঁজে পেল না। "ProjName / Myclass.h" কেউই কাজ করছে না।

দয়া করে যথাসম্ভব সুনির্দিষ্ট করুন

ধন্যবাদ


কোনও মৌলিক প্রশ্ন নয়
মাসিহ

উত্তর:


140

স্ট্যাটিক লাইব্রেরিতে ফ্রেমওয়ার্কের সবচেয়ে বড় সুবিধা হ'ল তারা সংকলিত গ্রন্থাগার বাইনারি এবং যে কোনও সম্পর্কিত শিরোনামকে প্যাকেজিংয়ের ঝরঝরে উপায় হিসাবে কাজ করে। এগুলি আপনার প্রকল্পে ফেলে দেওয়া যেতে পারে (যেমন এসডিকে অন্তর্নির্মিত ফ্রেমওয়ার্কগুলির মতো ফাউন্ডেশন এবং ইউআইকিট) এবং তাদের কেবলমাত্র কাজ করা উচিত (বেশিরভাগ সময়)।

বেশিরভাগ ফ্রেমওয়ার্কগুলিতে ডায়নামিক লাইব্রেরি থাকে; ম্যাক ফ্রেমওয়ার্ক টেম্পলেট ব্যবহার করে এক্সকোডে তৈরি ফ্রেমওয়ার্কগুলি একটি গতিশীল লাইব্রেরি তৈরি করবে। আইফোন গতিশীল ফ্রেমওয়ার্কগুলিকে সমর্থন করে না এজন্য আইওএস কোডের পুনরায় ব্যবহারযোগ্য লাইব্রেরিগুলির পরিবর্তে স্থির লাইব্রেরি হিসাবে বিতরণ করা সাধারণ হয়ে উঠেছে।

স্ট্যাটিক লাইব্রেরিগুলি ভাল, তবে ব্যবহারকারীর পক্ষ থেকে তাদের কিছুটা অতিরিক্ত কাজ প্রয়োজন। আপনার প্রকল্পটি লাইব্রেরিতে লিঙ্ক করতে হবে এবং আপনাকে আপনার প্রকল্পে শিরোনাম ফাইলগুলি অনুলিপি করতে হবে বা আপনার বিল্ড সেটিংসে যথাযথ শিরোনাম অনুসন্ধানের পথগুলি সেট করে কোথাও উল্লেখ করতে হবে।

সুতরাং: সংক্ষেপে, আমার মতে আপনার লাইব্রেরি বিতরণের সর্বোত্তম উপায়টি একটি কাঠামো হিসাবে। আইওএসের জন্য একটি "স্ট্যাটিক" কাঠামো তৈরি করতে, আপনি প্রয়োজনীয়ভাবে একটি সাধারণ কাঠামো নিতে পারেন এবং বাইনারিটিকে আপনার সংকলিত স্থিতাগার লাইব্রেরির সাথে প্রতিস্থাপন করতে পারেন। আমি এভাবেই আমার একটি লাইব্রেরি, রেস্টি বিতরণ করি এবং ভবিষ্যতে আমার গ্রন্থাগারগুলি কীভাবে বিতরণ করার ইচ্ছা রাখি।

আপনি সেই প্রকল্পের সরবরাহকৃত রেকফিলটি দেখতে চাইতে পারেন (আপনি যদি সচেতন না হন তবে রেক রুবির মেকের সমতুল্য)। আমার প্রজেক্টটি সংকলন (ব্যবহার করে xcodebuild) এবং আইওএসের স্থিতিশীল কাঠামো হিসাবে প্যাকেজিংয়ের জন্য আমার হাতে কয়েকটা কাজ রয়েছে। আপনি এই দরকারী খুঁজে পাওয়া উচিত।

বিকল্পভাবে, আপনি কোনও আইওএস ফ্রেমওয়ার্ক তৈরি করার জন্য এই এক্সকোড 4 টেম্পলেটগুলি ব্যবহার করতে চাইতে পারেন ।

আপডেট 9 ডিসেম্বর 2013 : এটি একটি জনপ্রিয় উত্তর তাই আমি ভেবেছিলাম আমি সম্পাদনা করে বলতে চাই যে গ্রন্থাগার বিতরণের জন্য আমার প্রথম পছন্দটি বদলে গেছে। কোনও গ্রাহক বা প্রযোজক হিসাবে যে কোনও তৃতীয় পক্ষের গ্রন্থাগারের জন্য আমার প্রথম পছন্দ হ'ল কোকোপডস। আমি আমার লাইব্রেরিগুলি কোকোপডগুলি ব্যবহার করে বিতরণ করি এবং ফ্যালব্যাক বিকল্প হিসাবে শিরোনামগুলির সাথে একটি প্রাকম্পম্পাইল স্ট্যাটিক লাইব্রেরি সরবরাহ করি।


1
সুতরাং লাইব্রেরিগুলি হয় স্থিতিশীল এবং গতিশীল হতে পারে, এবং ফ্রেমওয়ার্কগুলি কেবল গ্রন্থাগারের একটি গ্রুপ, যা গতিশীল বা স্থিরও হতে পারে, এটিই কি সঠিক বোঝাপড়া?
টনি

দেখে মনে হচ্ছে এক্সকোড ফ্রেমওয়ার্ক লক্ষ্য আপনাকে শিরোনামগুলি অনুলিপি করার অনুমতি দেয় তবে সংস্থান সংস্থানগুলিতে নয়। বিতরণ করা স্থির লাইব্রেরিতেও শিরোনাম থাকতে পারে?
টনি

ফলোআপ প্রশ্ন: আপনি যদি ডিবাগ বা বিতরণ ব্যবহার করে কোনও কাঠামো তৈরি করে থাকেন তবে কী ব্যাপার? কারণ অন্যথায় বিতরণ একটি ছোট পদচিহ্ন আছে।
অ্যালড্রিচ কো

2
@ GoRoS হ্যাঁ আমি করি; আসলে আমি কোকোপডগুলি ব্যবহার করে একটি ক্লায়েন্টকে তাদের ব্যক্তিগত এসডিকে উপলভ্য করার জন্য কিছু কাজ করেছি। কৌশলটি হ'ল সংকলিত স্ট্যাটিক লাইব্রেরি, শিরোনাম এবং পডস্পেক এটিকে নির্দেশ করে এবং আপনার উত্স সহ একটি ব্যক্তিগত রেপো সহ একটি পাবলিক রেপো। আদর্শভাবে আপনি আপনার ব্যক্তিগত রেপো পরীক্ষা করে দেখতে, আপনার পাবলিক রেপো সংকলন করতে এবং আপডেট করতে, দু'টিকে সিঙ্কে রেখে কিছু ধরণের সিআই / অটোমেশন রাখতে চান। পাবলিক রেপোতে প্রকৃত সংস্করণিত রিলিজগুলি ট্যাগ করতে ট্যাগগুলি ব্যবহার করুন (এবং সম্ভবত ব্যক্তিগত রেপোতেও তাই আপনি জানেন যে সর্বজনীন প্রকাশের জন্য কোন উত্স প্রতিশ্রুতি ব্যবহার করা হয়েছিল)।
লুক রেডপাথ

1
@ লুকের রেডপথ সিআই সহ আপনার সমাধানটি বেশ আদর্শ মনে হচ্ছে ... আপনি কীভাবে সেট আপ করবেন তার কয়েকটি টিউটোরিয়াল সহ ভাল কোনও নিবন্ধ / ব্লগ সম্পর্কে জানেন? আদর্শভাবে জেনকিন্সের সাথে
মাইক্রোমানক 3 আর

19

মূলত, ফ্রেমওয়ার্কগুলি লাইব্রেরি হয় এবং তাদের সাথে কাজ করার জন্য একটি কার্যকর ব্যবস্থা সরবরাহ করে। যদি আপনি কোনও ফ্রেমওয়ার্ক "ভিতরে" দেখেন তবে এটি কেবল একটি স্ট্যাটিক লাইব্রেরি এবং শিরোলেখ ফাইলগুলি (মেটাডাটা সহ কিছু ফোল্ডার কাঠামো) অন্তর্ভুক্ত directory

আপনি যদি নিজের কাঠামো তৈরি করতে চান তবে আপনাকে একটি "স্ট্যাটিক লাইব্রেরি" তৈরি করতে হবে এবং একটি নির্দিষ্ট উপায়ে এটি প্যাক করতে হবে। দেখতে এই প্রশ্নের

সাধারণভাবে, প্ল্যাটফর্মগুলিতে ফ্রেমওয়ার্কগুলি পুনরায় ব্যবহারযোগ্য আচরণের জন্য ব্যবহৃত হয় যেখানে আপনি নিজের কোডটি "বিদ্যমান কাঠামোর সাথে যুক্ত করেন"। আপনি যদি কিছু নির্দিষ্ট কার্যকারিতা রাখতে চান তবে আপনি একটি গ্রন্থাগার (উদাহরণস্বরূপ তিন20) ব্যবহার করতে এবং এটি বিতরণযোগ্য আপনার অ্যাপ্লিকেশনটিতে প্যাক করতে পারেন


1
মনে রাখবেন যে কোনও কাঠামোর একটি স্ট্যাটিক লাইব্রেরি থাকতে হবে এমন কোনও প্রয়োজন নেই। আসলে, ম্যাক ওএস এক্সে বেশিরভাগ ফ্রেমওয়ার্কগুলিতে স্থির লাইব্রেরি থাকে না - এর পরিবর্তে ডায়নামিক লাইব্রেরি থাকে।

ধন্যবাদ এটি পরিষ্কার, তবে আমি কীভাবে একটি এম। এম ফাইলের মধ্য থেকে একটি স্ট্যাটিক লাইব্রেরিতে ক্লাস কল করতে পারি? "লাইব্রেরিগুলির সাথে লিঙ্ক বাইনারিগুলি" যুক্ত করার পাশাপাশি, # ইম্পোর্টকে "মাই ক্লাস এইচ" কল করা কি যথেষ্ট?
লিওনার্দো

@ বাভরিয়াস আপনি ঠিক বলেছেন আমার কেবল "লাইব্রেরি" লেখা উচিত ছিল ^^; এখনও, লাইব্রেরি ছাড়া প্রায় কোনও কাঠামো আছে - বেশিরভাগ ক্ষেত্রে, আপনি সংকলনের জন্য একটি কাঠামোর সাথে লিঙ্ক করেন এবং লাইব্রেরি লক্ষ্য সিস্টেমে উপস্থিত থাকে। এটি আবার এই আচরণ-বনাম-কার্যকারিতা জিনিস
মার্টিন উলরিচ

@ লিওনার্দো হ্যাঁ, মূলত আপনার এটি করতে হবে। কেবল নিশ্চিত করুন যে .h-ফাইলগুলি আপনার পথে রয়েছে। আপনার কাছে যদি লিবারার এক্সকোড-প্রকল্প থাকে তবে আপনি প্রকল্প এবং তার লক্ষ্যটিকে নির্ভরতা হিসাবে অন্তর্ভুক্ত করতে পারেন যাতে আপনি আরও ডিবাগিং বৈশিষ্ট্য এবং আপনার পথের
.h-

আমি বিভ্রান্ত হয়ে পড়েছি, আমি আপনার উত্তরটি সঠিক বলে চেষ্টা করেছি, কিন্তু আমি এটি "-1" হিসাবে চিহ্নিত করেছি?!?!?!?!?! দ্বিতীয়ত, গ্রন্থাগারটি একটি ওয়ার্কস্পেসের অংশ, এবং মূল প্রকল্প থেকে সঠিকভাবে সংযুক্ত। কিন্তু অ্যাপ্লিকেশনটি তৈরি করার সময় আমি লাইন '# ইম্পোর্ট "মাই ক্লাস এইচ" "তে এখনও" শ্রেণি খুঁজে পাই না "getting আমি জানি এটির কাজ করার জন্য একটি কৌশল আছে।
লিওনার্দো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.