অ্যাপ্লিকেশনটি কী জন্য এবং আমি কীভাবে এটি ব্যবহার করব তা আমি কীভাবে জানতে পারি?


146

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

উত্তর:


255

আমি সাধারণত অ্যান্ড্রু দ্বারা "আপনার আবেদনের হৃদয়" শব্দটি ব্যবহার করে বোঝানো নকশা পদ্ধতির বিষয়টি এড়িয়ে চলি। আমি এর দ্বারা যা বোঝাতে চাইছি তা হ'ল আমার ধারণা যে আপনি কোনও কেন্দ্রীয় অবস্থানে খুব বেশি জিনিস গলানো এড়ানো উচিত - ভাল প্রোগ্রাম ডিজাইনে সাধারণত "উদ্বেগের ক্ষেত্র" দ্বারা কার্যকারিতা আলাদা করা জড়িত।

একটি প্রতিনিধি অবজেক্ট এমন একটি বস্তু যা অবজেক্ট হয় যার সাথে এটি সংযুক্ত থাকে তা নির্দিষ্ট ইভেন্ট বা রাজ্যে পৌঁছায়। এই ক্ষেত্রে, অ্যাপ্লিকেশন ডেলিগেট হ'ল একটি অবজেক্ট যা ইউআইএপ্লিকেশন অবজেক্ট নির্দিষ্ট কিছু স্থানে পৌঁছালে বিজ্ঞপ্তিগুলি গ্রহণ করে। অনেক ক্ষেত্রে, এটি এক এক থেকে এক পর্যবেক্ষক নিদর্শন।

এর অর্থ হ'ল অ্যাপডেলিগেটের জন্য "উদ্বেগের ক্ষেত্র" বিশেষ ইউআইএপ্লিকেশন রাজ্যগুলি পরিচালনা করছে। এর মধ্যে সর্বাধিক গুরুত্বপূর্ণ:

  • অ্যাপ্লিকেশনডফিনিশলঞ্চিং: - অন-স্টার্টআপ কনফিগারেশন এবং নির্মাণ পরিচালনা করার জন্য ভাল
  • অ্যাপ্লিকেশনওয়ালটার্মিনেট: - শেষে পরিষ্কার করার জন্য ভাল

অ্যাপডিলেজেটে অন্য কার্যকারিতা স্থাপন করা আপনার এড়ানো উচিত কারণ তারা আসলে সেখানে নেই। এই জাতীয় অন্যান্য কার্যকারিতা অন্তর্ভুক্ত:

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

অনেক লোক এই বিষয়গুলিকে তাদের অ্যাপডিলেজেটে গলিত করে কারণ তারা অলস বা তারা মনে করে যে অ্যাপডেলিগেট পুরো প্রোগ্রামটি নিয়ন্ত্রণ করে। আপনার অ্যাপ্লিকেশনটিতে কেন্দ্রীভূত হওয়া এড়ানো উচিত কারণ এটি অ্যাপটিতে উদ্বেগের ক্ষেত্রগুলিকে হতাশ করে এবং স্কেল করে না।


8
+1 এটি একটি দুর্দান্ত উত্তর। আমি এমন কিছু নমুনা কোডটি দেখছিলাম যা সাবভিউগুলিতে একটি অ্যাপ্লিকেশনকে কল করে একটি ভিন্ন সাবউভিউতে স্যুইচ করার জন্য একটি ভিউ কন্ট্রোলারকে নির্দেশ দেওয়ার জন্য অ্যাপ্লিকেশন ডেলিগেট বলে ডাকে এবং এটি কোড গন্ধের মতো অনুভূত হয়েছিল। আমার নাক এখনও কাজ করে জানি ভাল।
অ্যালান

2
কখনও কখনও আমরা অনলাইনে টিউটোরিয়ালে এই জাতীয় কিছু দেখতে পাই: অ্যাপডেলিগেট * ডেল = [অ্যাপডেলিগেট শেয়ারড অ্যাপ্লিকেশন]; (দেখুন ডেভেলপার.অ্যাপল. com/ লিবেরি / ম্যাক /# ডকোমেন্টেশন / কোকো / কনসেপ্টুয়াল/… ) এর অর্থ কী? আমি এটির ব্যবহারের উদাহরণ দেখতে পাচ্ছি তবে আমি এর পিছনের তত্ত্বটি সত্যই বুঝতে পারি না (উদাহরণটি দেখুন: বিকাশকারী.এপলল
লিবারি

27

আপনার অ্যাপ্লিকেশন প্রতিনিধি আপনার আবেদনের প্রাণকেন্দ্র। এটি কার্যকরভাবে আপনার "প্রোগ্রাম নিয়ামক"।

অ্যাপ্লিকেশন ডেলিগেটটি এমন শ্রেণি যা অ্যাপ্লিকেশন-স্তরের বার্তাগুলি গ্রহণ করে, অ্যাপ্লিকেশনডফিনিশলঞ্চিং বার্তা সহ অন্যান্য মতামত তৈরির জন্য সবচেয়ে বেশি ব্যবহৃত হয়।

ঠিক একইরকম না হলেও আপনি এটিকে আপনার কোকো প্রোগ্রামের "প্রধান ()" রুটিন হিসাবে ভাবতে পারেন।


আমি আপনাকে +1 দিচ্ছি কারণ অ্যাপডেলিগেটে আপনার সমস্ত ইউআই কন্ট্রোলার থাকার জন্য এটির সমস্ত কাস্টম ক্লাস তৈরির চেয়ে কোনও ঝামেলা কম নয়।
rwols

3
@ রোলগুলি সতর্ক থাকুন, আপনার উদ্বেগগুলি পৃথক করা ক্লিনার কোডের জন্য সহায়তা করে এবং এটির ডিবাগ করতে কোনও ঝামেলা কম হয় না custom আপনার এই কাস্টম ক্লাসটি তৈরি করতে সময় নেওয়া উচিত এবং আপনার সমস্ত পর্যবেক্ষককে একটি ফাইলে রাখবেন না।
হুইলিজ 21 '20

2

@ শিভাম, ধন্যবাদ

আমি যা বুঝতে পেরেছি তা থেকে অ্যান্ড্রয়েডে appDelegateযা রয়েছে তার কাছাকাছি ApplicationviewDidLoad, viewDidDisappearকি Android এর লাইফ সাইকল সাথে তুলনা করা যায়। প্রতিটি অ্যাপ্লিকেশনটির জীবন চক্র রয়েছে, কলগুলি থেকে আসা বাধা দেওয়া থেকে শুরু করে বিজ্ঞপ্তিগুলি প্রদর্শন পর্যন্ত life এই systemইভেন্টগুলি ঘটে যখন আপনার বিশেষ কিছু করার জন্য আপনার কোডের প্রয়োজন হয় তবে আপনার কোডগুলি কোডগুলি লিখতে হবে।

অ্যান্ড্রয়েড আমরা ব্যবহার ইন onPause, onDestroy, onCreateধরণ যেমন সিস্টেম ঘটনাগুলিকে পরিচালনা করতে পদ্ধতি কলব্যাক।


onPause, onCreateএবং onDestroyAndroid এর পদ্ধতি আরো মতই viewDidDisappear, viewDidLoadএকটি iOS দেখুন কন্ট্রোলার এর জীবনচক্র পদ্ধতি। আপনার যদি তুলনা করতে হয় তবে আমি বলব Applicationঅ্যান্ড্রয়েডের ক্লাসটি AppDelegateআইওএস-এর কাছাকাছি থাকবে ।
শিবম ভাল্লা

ধন্যবাদ, আপনি যদি আমার উত্তরটি আরও ভাল করতে পারেন তবে দয়া করে করুন। আমি আপনার উত্তর পড়ে আমার উত্তর মুছে ফেলব।
সিদ্ধার্থ

1

আশা করি এটি আরও কিছুটা সহায়তা করবে ...

এই ভাষায় নতুন প্রোগ্রামারদের সর্বদা একই প্রশ্ন থাকে - প্রোগ্রামটি কোনও মূল পদ্ধতি থেকে শুরু হয়? হ্যাঁ, আপনি এক্ষেত্রে ঠিক বলেছেন; আইওএস অ্যাপসও একটি প্রধান পদ্ধতি থেকে শুরু হয়।
আপনার প্রধান বর্গ নীচের ফাংশন কল:

 UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

ইউআইএআইপ্লিকেশনমেইন কোকো টাচ রান লুপ এবং অ্যাপ্লিকেশন অবকাঠামো বন্ধ করে দেয় যা একটি UIApplicationবস্তু তৈরি করে । আমাদের অ্যাপ্লিকেশনটির বিষয়বস্তু দরকার তাই উদ্দেশ্য-সি এটি পরিচালনা করতে কোনও প্রতিনিধি ব্যবহার করে। এজন্য আমরা এটিকে অ্যাপডেলিগেট বলি (প্রতিনিধি হিসাবে কাজ করুন UIApplication)। আমরা সেই প্রতিনিধিটির কিছু alচ্ছিক পদ্ধতি বাস্তবায়ন করি এবং এটি সে অনুযায়ী আচরণ করে।


অনুগ্রহ করে কেউ আমাকে উপরের উত্তরে হটসকে ভুল করে তুলতে পারে
অনুরাগ ভাকুনি

2
এটি বিভ্রান্ত বলে মনে হয় কারণ ক) আপনি যথাযথ বিরামচিহ্ন / বানান / ব্যাকরণ ব্যবহার করেন না, খ) মূল পোস্টার জিজ্ঞাসিত প্রশ্নের উত্তর দেয় না বলে এটি অফ-টপিক।
কে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.