আইওএস 5 সেরা অনুশীলন (প্রকাশ / ধরে রাখা?)


109

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


1
এআরসি ব্যবহার করুন, এবং এখানে বর্ণিত সর্বোত্তম অনুশীলনগুলি অনুসরণ করুন: amattn.com/2011/12/07/arc_best_practices.html আপনি যদি এটি করেন, আপনি দেখতে পাবেন যে এআরসি "ঠিক কাজ করে"। যদি আপনি এই অনুশীলনগুলি অনুসরণ না করেন তবে আপনি ফাঁস হয়ে যাবেন এবং এগুলি ট্র্যাক করতে প্রচুর সময় ব্যয় করবেন ....
n13

উত্তর:


98

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


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

নির্দিষ্ট ফাইলগুলির জন্য আরসি থেকে বেরিয়ে আসার বিষয়ে অ্যাপল যা বলেছে তা এখানে:

আপনি যখন এআরসি ব্যবহারের জন্য কোনও প্রকল্প স্থানান্তর করেন, তখন -ফোবজক-আর্ক সংকলক পতাকাটি সমস্ত উদ্দেশ্য-সি উত্স ফাইলগুলির জন্য ডিফল্ট হিসাবে সেট করা থাকে। আপনি সেই শ্রেণীর জন্য -fno-objc-arc সংকলক পতাকা ব্যবহার করে একটি নির্দিষ্ট শ্রেণীর জন্য ARC অক্ষম করতে পারেন। এক্সকোডে, টার্গেট বিল্ড ফেজস ট্যাবে, উত্স ফাইলের তালিকাটি প্রকাশ করতে কমপাইল উত্স গ্রুপটি খুলুন। আপনি যে ফাইলটির জন্য পতাকা সেট করতে চান তার ডাবল-ক্লিক করুন, পপ-আপ প্যানেলে -fno-objc-arc প্রবেশ করুন, তারপরে সম্পন্ন ক্লিক করুন।

এখানে চিত্র বর্ণনা লিখুন

সম্পূর্ণ রূপান্তর গাইড এখানে দেখুন


15
স্পষ্টতই "ফাইলের প্রতি" ভিত্তিতে এআরসি বন্ধ করা যেতে পারে, সম্ভবত লিগ্যাসি গ্রন্থাগারগুলি ব্যবহারের অনুমতি দেয় ... তবে আমি এটি খেলি না তাই আমি এখনও জানি না। যদিও আমি এটি সম্পর্কে বেশ উত্তেজিত। আপনি কি এমন একটি পৃথিবী কল্পনা করতে পারেন যেখানে আইওএস ডেভসদের ঘাম ঝরাতে / ছাড়তে হবে না ?? আমরা এখানে এসও নিয়ে কী কথা বলব ?? ;-)
ড্যান রে

45
ঠিক যখন আমি শেষ পর্যন্ত সেই সমস্ত মেমরি পরিচালনার জঞ্জালগুলিতে একটি ভাল হ্যান্ডেল পেয়েছিলাম এবং তারপরে তারা এটিকে অপ্রাসঙ্গিক করে তোলে। চাকরি !!!
কংগ্রেস

@ ড্যান: আপনি কি রসিকতা করছেন না এটি নির্বাচিতভাবে বন্ধ করা যেতে পারে? দয়া করে একটি লিঙ্ক দিন, এটি আমার পক্ষে গুরুত্বপূর্ণ! : D
sudo rm -rf

1
আমি বিশ্বাস করি যে সংকলকটি এখন এনডিএর অধীনে নেই সুতরাং আপনার কোড থেকে কিছু ফাইল (সাধারণত তৃতীয় পক্ষের উত্স ফোল্ডারগুলি) বেছে বেছে বাদ দিতে, কেবল প্রতিটি ফাইলে সংকলক বিকল্প হিসাবে এটি যুক্ত করুন: -fno-objc-arc
ব্ল্যাকজ্যাক 75

2
@ ইয়ার: হ্যাঁ আপনি আছেন আমি আশা করি এটি সাধারণ ছিল, তবে দুর্ভাগ্যক্রমে সমস্ত লাইব্রেরি এত সহজ নয়। JSONKitউদাহরণস্বরূপ, নিন । এটিআরসি চেকের মাধ্যমে চালানোর চেষ্টা করুন। আপনি যা বলতে চাইছেন তা আপনি দেখতে পাবেন। ;)
sudo rm -rf

170

পৃথক ফাইলগুলিতে কীভাবে আরসি বন্ধ করা যায় সে সম্পর্কে এখনও কারও আগ্রহী, আমি যা করেছি তা এখানে:

  1. এর অধীনে আপনার প্রকল্পের সেটিংসে যান Build Phases > Compile Sources
  2. আপনি যে ফাইলগুলি এআরসি অক্ষম করতে চান তা নির্বাচন করুন এবং -ফনো-অ্যাজেক-আরক সংকলক পতাকা যুক্ত করুন। আপনি "শট" এ চাপলে ফাইলগুলি নির্বাচন করে এক শটে একাধিক ফাইলের জন্য পতাকা সেট করতে পারেন।

আমি জানি না এটি প্রস্তাবিত উপায় কিনা তবে এটি আমার পক্ষে কার্যকর।

PS: আমি এই তথ্যটি এখানে clang.llvm.org থেকে সংগ্রহ করেছি যা সর্বজনীনভাবে অ্যাক্সেসযোগ্য, এটি এনডিএর অধীনে নয়।


1
আমি যখন এই পতাকাটি একটি লাইব্রেরি সহ ব্যবহার করি তখন এটি কাজ করে, তবে যতক্ষণ না আমি lib .h ফাইলটিকে একটি এআরসি ক্লাসে অন্তর্ভুক্ত করি এক্সকোড অভিযোগ করে যে আমার কাছে পতাকা আছে না। আপনি কি এই পতাকাটি সহ পুরানো গ্রন্থাগারগুলি পেতে সক্ষম হয়েছিলেন?
কেসি

আমি এএসআইএইচটিপিআরকয়েস্ট এবং এসবিজেসনকে কাজ করতে সক্ষম হয়েছি (রিচাবিলিটি.ই.-তে স্ট্রাক্ট ব্যবহারের জন্য আমি 1 সতর্কতা পাই)। আমি তাদের সমস্ত প্রয়োগকারী ফাইলগুলিতে পতাকাটি রেখেছি।
পিক্সেলফ্রিয়াক

সমস্ত বাস্তবায়ন ফাইল বা শুধু .h এর? প্রকল্পের আমার সংকলন উত্স বিভাগে এটিতে কেবলমাত্র শিরোনাম ফাইল রয়েছে, কোনও বাস্তবায়ন ফাইল নেই। আমি এগুলি যুক্ত করতে পারি, তবে এটির কোনও আলাদা প্রভাব আছে বলে মনে হয় না । আপনার রেফারেন্সের জন্য, আমি কাজ করার জন্য একটি রেস্ট পার্সার পাওয়ার চেষ্টা করছি। ( Github.com/mirek/NSMutableDictionary-REST.framework )
ক্যাসি

1
আহা! আমি ত্রুটিগুলি ঘনিষ্ঠভাবে তাকান না। পতাকা ছাড়াই এগুলি পৃথক ত্রুটি। আমাকে কেবল কোড থেকে ওহা-লা থেকে অটো রিলিজ পুলটি সরিয়ে ফেলতে হয়েছিল!
কেসির

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

10

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

পূর্ববর্তী সংস্করণগুলির জন্য, আপনাকে রেফারেন্স গণনা করতে হবে এবং সেই অনুসারে ধরে রাখতে হবে এবং ছেড়ে দিতে হবে। পরীক্ষা করে দেখুন মেমরি ম্যানেজমেন্ট গাইড

সম্পাদনা করুন: স্বয়ংক্রিয় রেফারেন্স গণনা এবং সর্বজনীন আইওএস 5 পৃষ্ঠার একটি উদ্ধৃতি সম্পর্কিত একটি সর্বজনীন বৈশিষ্ট এখানে :

উদ্দেশ্য-সি এর জন্য স্বয়ংক্রিয় রেফারেন্স কাউন্টিং (এআরসি) মেমরি ম্যানেজমেন্টকে সংকলকের কাজ করে তোলে of নতুন অ্যাপল এলএলভিএম সংকলকটি দিয়ে এআরসি সক্ষম করে, ক্রাশ এবং মেমরি ফাঁস হ্রাস করার সময় আপনার কখনই পুনরুদ্ধার বা পুনরায় প্রকাশের দরকার হবে নাটকীয়ভাবে বিকাশ প্রক্রিয়াটিকে সরল করে তোলা। সংকলকটি আপনার অবজেক্টগুলির একটি সম্পূর্ণ উপলব্ধি রয়েছে এবং প্রতিটি বস্তু এটি ব্যবহার করা হয় না তা তাত্ক্ষণিকভাবে প্রকাশ করে, সুতরাং অ্যাপসটি পূর্বের মতো স্পষ্টভাবে চালিত হয়, পূর্বাভাসযোগ্য, মসৃণ পারফরম্যান্স সহ।


আইওএস 5 ব্যবহার করে উন্নত অ্যাপ্লিকেশনগুলি কি পুরানো আইফোনের সাথে কাজ করবে?
গিগগার্ল

আপনি পুরানো ওএসগুলির জন্য বিকাশের জন্য সরঞ্জামগুলি ব্যবহার করতে সক্ষম হবেন তবে আপনি আরসির মতো নতুন প্রযুক্তি ব্যবহার করতে পারবেন না। আপনি যদি পুরানো ওএসগুলি লক্ষ্য করতে চান, আপনাকে ম্যানুয়াল মেমরি পরিচালনা করতে হবে। আপনি যদি এআরসি ব্যবহার করতে চান তবে আপনাকে ব্যবহারকারীদের আইওএস 5
তে

1
এআরসি-র একটি উল্লেখ জনগণের মুখোমুখি অ্যাপল পৃষ্ঠার বিকাশকারীতে রয়েছে app
কোব্বল

8
আসলে এটি বেশ সত্য নয়। আপনি এআরসি দিয়ে আইওএস 4 এর জন্য তৈরি করতে পারেন। অ্যাপল ইঞ্জিনিয়ারের উদ্ধৃতি: " আইওএস 4 এবং ম্যাক ওএস 10.6 এর জন্য, সংকলকটি আপনার অ্যাপ্লিকেশনটিতে কিছুটা রানটাইম সামঞ্জস্যতা আঠালো কোড যুক্ত করে __উইক ভেরিয়েবল ব্যতীত সমস্ত কিছুর জন্য এটি কাজ করে, সামঞ্জস্যতা কোডটি সরবরাহ করতে পারে তার চেয়ে বেশি সমর্থন প্রয়োজন iOS আইওএস এআরসি ৪-এআরসি কোডের চেয়ে সহজ, তবে এটি আইওএস-এ এআরসি-এর মতো সহজ নয় "" উপায় দ্বারা, ডাব্লুডাব্লুডিসি শিডিউল অ্যাপটি এআরসি দিয়ে লেখা হয়েছিল এবং এটি আইওএস 4 এ ঠিক কাজ করেছিল!
sudo rm -rf

3
হাঁ; তবে এটি এআরসি আলোচনায় যোগ্য ছিল কারণ কেবলমাত্র 4.3.x টার্গেটগুলি 'সামঞ্জস্যতা আঠালো' পান।
অ্যালান জেইনো

4

এই মুহুর্তে বিশদগুলি হালকা / এনডিএর অধীনে, তবে অ্যাপল আইওএস 5-এ স্বয়ংক্রিয় রেফারেন্স কাউন্টিং (এআরসি) প্রয়োগ করেছে, এখানে বিস্তারিত হিসাবে: http://developer.apple.com/technologies/ios5/

আপনি যদি আইওএস 5 এসডিকে দিয়ে এক্সকোড 4 এ একটি নতুন অ্যাপ্লিকেশন বিকাশ করেন তবে আপনি রক্ষণ / প্রকাশের গণনা নিরাপদে উপেক্ষা করতে পারবেন।

sudo rm -rf [সম্পাদনা] একটি ভাল পয়েন্ট তোলে; তৃতীয় পক্ষের libs উল্লেখযোগ্যভাবে প্রভাবিত হতে পারে


আইওএস 5 ব্যবহার করে উন্নত অ্যাপ্লিকেশনগুলি কি পুরানো আইফোনের সাথে কাজ করবে?
গিগগার্ল

এটি আইফোন 5 চলমান আইফোনগুলিতে কাজ করবে, সুতরাং কেবল আইফোন 3 জিএস বা আইফোন 4 আমি বিশ্বাস করি না যে এটি আইওএস 4 সমর্থন করবে, তবে আবার, এটি কম্পাইল করার সময় এলএলভিএম দ্বারা সম্পন্ন হয়েছে, সুতরাং এটির জন্য বাইনারি তৈরি করা সম্ভব হতে পারে আইওএস ৪ এবং ৫. আমি একটি আইওএস বিকাশকারী অ্যাকাউন্ট পাওয়ার এবং উপলব্ধ বিকল্পগুলির সাথে ঘুরে দেখার পরামর্শ দিচ্ছি।
ডোমিনিক

যেমন সুডো নেভানের উত্তরের মন্তব্যে উল্লেখ করেছেন, আপনি সত্যিই এআরসি দিয়ে আইওএস ৪.০ তে লক্ষ্য রাখতে পারেন, তাই ওএস চালিয়ে নিতে পারে এমন পুরানো ডিভাইসগুলি এটির সাথে সামঞ্জস্যপূর্ণ।
ব্র্যাড লারসন

3

কেউ সিস্টেম কনফিগারেশন.ফ্রেমওয়ার্কের কথা উল্লেখ করেনি ? ফ্রেমওয়ার্ক এ রাখা ভুলবেন না দয়া করে । আমি তা বুঝতে কয়েক ঘন্টা ব্যয় করেছি।


আপনার ব্যাখ্যা করা উচিত কেন।
জন রিসেলভাতো

3

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


0

প্রকল্পের সেটিংসে --fno-objc-arc হিসাবে পতাকা সেট করুন> পর্যায়গুলি তৈরি করুন> সংকলন উত্স

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.