Avatar ·

ما الفرق بين static func و class func في Swift؟

مرحبًا! بدأت تعلم Swift ووجدت طريقتين متشابهتين لتعريف الطرق: `static func` و `class func`. يبدو أن كلاهما يسمح باستدعاء الطريقة على مستوى النوع وليس على مستوى الكائن، لكنني لا أفهم الفرق الجوهري. على سبيل المثال، يمكنني كتابة: ```swift class MyClass { static func staticMethod() { print("هذه طريقة ثابتة") } class func classMethod() { print("هذه طريقة كلاسية") } } ``` واستدعاؤهما بنفس الطريقة: `MyClass.staticMethod()` و `MyClass.classMethod()`. النتيجة واحدة – طباعة النصوص. فلماذا إذن كلمتان مختلفتان؟ حاولت إنشاء فئة فرعية وتجاوز الطريقة، لكن المترجم يشتكي عندما أحاول تجاوز `static func`. بينما `class func` يسمح بالتجاوز. هل هذا هو الفرق الوحيد؟ أم هناك تفاصيل أخرى؟ ربما فرق في الأداء أو في كيفية تخزينهما في الذاكرة؟ يرجى الشرح بالتفصيل، ما فائدة كل منهما.