سؤال

قل على سبيل المثال لدي ibacte هذا مدمن حتى أ Uibultton في Builder الواجهة.

- (IBAction)functionToBeCalled:(id)sender
{
   // do something here   

}

مع الكود الخاص بي ، قل على سبيل المثال بطريقة أخرى ، ما هي أفضل طريقة لاستدعاء ذلك ibacte?

إذا حاولت أن أسميها هكذا ، أتلقى خطأ:

[self functionToBeCalled:];

لكن ، إذا حاولت أن أسميها مثل هذا (الغش قليلاً ، على ما أعتقد) ، فهو يعمل بشكل جيد:

[self functionToBeCalled:0];

ما هي الطريقة الصحيحة لاستدعاؤها بشكل صحيح؟

هل كانت مفيدة؟

المحلول

الطريقة الصحيحة هي:

- [self functionToBeCalled:nil] 

لتمرير مرسل نيل ، مما يشير إلى أنه لم يتم استدعاؤه من خلال الإطار المعتاد.

أو

- [self functionToBeCalled:self]

لتمرير نفسك كمرسل ، وهو صحيح أيضًا.

أي واحد يختار يعتمد على ما تفعله الوظيفة بالضبط ، وما يتوقع أن يكون المرسل.

نصائح أخرى

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

- (IBAction)onButtonTap:(id)sender {
    [self doSomething];
}

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top