متى تستخدم غير المملوك مقابل الضعيف؟

النتيجة: 4.9 / 5 ( 30 صوتا )

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

متى يجب استخدام غير مملوك أم ضعيف؟

استخدم مرجعًا ضعيفًا عندما يكون صالحًا أن يصبح هذا المرجع صفريًا في مرحلة ما خلال حياته. على العكس من ذلك ، استخدم مرجعًا غير مملوك عندما تعلم أن المرجع لن يكون صفريًا أبدًا بمجرد تعيينه أثناء التهيئة.

ما هو الفرق بين الضعيف وغير المملوك؟

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

ما الفرق بين المرجع الضعيف والمرجع غير المملوك؟

كل من المراجع الضعيفة وغير المملوكة لن تؤثر على العدد المرجعي للكائن. لكن المرجع الضعيف سيكون دائمًا اختياريًا ، أي أنه يمكن أن يكون صفريًا ، في حين أن المراجع غير المملوكة لا يمكن أن تكون صفرية أبدًا ، لذا فهي لن تكون اختيارية أبدًا.

ما هو القوي الضعيف وغير المملوك؟

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

ضعيف مقابل غير مملوك

تم العثور على 17 أسئلة ذات صلة

ما هو الضعيف القوي وغير المألوف في سويفت؟

المراجع غير المملوكة ، مثل المراجع الضعيفة ، لا تزيد من احتفاظ الكائن الذي تتم إحالته. ومع ذلك ، في Swift ، يتمتع المرجع غير المملوك بميزة إضافية تتمثل في عدم كونه اختياريًا. ... كلا المراجع الضعيفة وغير المملوكة لا تزيد من احتفاظ التهم . يمكن استخدام كلاهما لكسر دورات الاحتفاظ.

هل يمكن أن يكون غير المملوك اختياري؟

التغيير الوحيد هنا هو أن المتغير غير المملوك يمكن أن يكون اختياريًا ، والذي كان غير قانوني سابقًا. هذا التغيير يعتني بحالة مزعجة ، هذا كل شيء. نعم إنه كذلك.

ما هو الضعف القوي في Swift؟

في Swift ، المراجع القوية هي الخيار الافتراضي ، لذلك لجعل المرجع ضعيفًا ، يمكنك استخدام الكلمة الأساسية الضعيفة. على عكس المراجع القوية ، لا يؤثر المرجع الضعيف على عدد مرات الاحتفاظ بالمثيل . لا يتمسك بالجسم. ... باختصار ، الدورة المرجعية القوية أو "دورة الاحتفاظ" هي حالتان يتمسكان ببعضهما البعض.

ما هو الضعف في الهدف ج؟

وضعيف يحدد مرجعاً لا يحافظ على الكائن المشار إليه على قيد الحياة . يتم تعيين المرجع الضعيف على صفر في حالة عدم وجود مراجع قوية للكائن.

ما هي الذات غير المملوكة في Swift؟

المكان الأكثر شيوعًا الذي ستشاهده المتغيرات غير المألوفة هو الإغلاق الذي يعلن [ذاتيًا غير مملوك] - وهذا يعني " أريد الإشارة إلى الذات داخل هذا الإغلاق ولكني لا أريد امتلاكها ." لماذا غير مملوك وليس ضعيف؟ كلاهما سينجح ، لكن دعنا نواجه الأمر: إذا كانت الذات لا شيء داخل الإغلاق ، فقد حدث خطأ ما!

هل يجب أن تكون منافذ IBOutlets ضعيفة أم قوية؟

الجواب الرسمي من Apple هو أن منافذ IBOutlets يجب أن تكون قوية . الحالة الوحيدة التي يجب أن يكون فيها منفذ IBOutlet ضعيفًا هي تجنب دورة الاحتفاظ. يمكن أن تؤدي دورة مرجعية قوية إلى تسرب الذاكرة وتعطل التطبيق.

ما هو نظام VAR الكسول؟

var lazy هو خاصية لا يتم حساب قيمتها الأولية حتى يتم استدعاؤها لأول مرة . إنه جزء من عائلة الخصائص التي لدينا فيها خصائص ثابتة وخصائص محسوبة وخصائص قابلة للتغيير.

هل يجب علي دائمًا استخدام ذاتي الضعيفة في الإغلاق؟

استخدام [الذات الضعيفة] مطلوب فقط في المواقف التي يؤدي فيها التقاط الذات بقوة إلى التسبب في دورة الاحتفاظ ، على سبيل المثال عندما يتم التقاط الذات داخل إغلاق يتم الاحتفاظ به أيضًا في النهاية بواسطة نفس الكائن.

ما هي الذات الضعيفة في الختام؟

يتطلب الهروب من عمليات الإغلاق [ضعف الذات] إذا تم تخزينها في مكان ما أو تمريرها إلى إغلاق آخر ، ويحتفظ كائن بداخلها بإشارة إلى الإغلاق. يمكن أن يؤدي guard let self = self إلى إلغاء التخصيص المتأخر في بعض الحالات ، والذي قد يكون جيدًا أو سيئًا حسب نواياك.

لماذا تقوم عمومًا بإنشاء مرجع ضعيف عند استخدام الذات في كتلة؟

ولكن إذا كان مرقّم الصفحات مملوكًا لـ ViewController ، ولم يتم استدعاء هذه الكتل بعد تحرير ViewController ، فإن استخدام مرجع __ ضعيف سيكون الخطوة الآمنة (لأن الذات تمتلك الشيء الذي يمتلك الكتل ، ومن المحتمل أن تظل موجودة عندما تسميها الكتل على الرغم من أنها لا تحتفظ بها).

ما هي الخاصية القوية في Objective-C؟

strong (افتراضي) تعني كلمة Strong فقط أن لديك مرجعًا لكائن وستحتفظ به على قيد الحياة . طالما أنك تحتفظ بهذا المرجع للكائن في تلك الخاصية ، فلن يتم إلغاء تخصيص هذا الكائن وإعادته إلى الذاكرة.

ما هوIBOutlet؟

IBOutlet هي كلمة أساسية تضاف إلى إعلان متغير . إنه مؤشر. لا يؤثر على الإعلان بأي شكل من الأشكال. ومع ذلك ، عندما يراه منشئ الواجهة ، سيسمح للمبرمج بتعيين هذا المتغير من خلال آلية "المخرج" داخل أداة إنشاء الواجهة.

ما هو اللاذري والقوي في Objective-C؟

تعني الخاصية nonatomic أن أساليبsynthesize d لن يتم إنشاؤها بواسطة Threadafe - ولكن هذا أسرع بكثير من الخاصية الذرية حيث يتم حذف عمليات التحقق الإضافية. يتم استخدام strong مع ARC وهو يساعدك بشكل أساسي ، من خلال عدم القلق بشأن الاحتفاظ بالعدد للكائن.

ما هو الفرق بين الضعيف والقوي في سويفت؟

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

ما هو الإغلاق في Swift؟

عمليات الإغلاق عبارة عن كتل وظيفية قائمة بذاتها يمكن تمريرها واستخدامها في التعليمات البرمجية الخاصة بك . تشبه عمليات الإغلاق في Swift الكتل في C و Objective-C و lambdas في لغات البرمجة الأخرى. ... الدالات المتداخلة هي عمليات إغلاق لها اسم ويمكنها التقاط القيم من وظيفة التضمين الخاصة بها.

ما هو الفرق بين خصائص الملكية القوية والضعيفة؟

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

لماذا المندوبين ضعفاء في سويفت؟

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

ما هي دورة مرجعية قوية؟

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

ما هي دورة الاحتفاظ؟

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

كيف تجعل المتغير قويًا في Swift؟

A var يكون قويًا بشكل افتراضي . يمكنك إضافة الكلمة الأساسية الضعيفة قبل var لجعلها ضعيفة. الخصائص قوية بشكل افتراضي ، ولكن إذا كنت تريد خاصية ضعيفة يمكنك: مستأجر ضعيف: شخص؟