سؤال

أحاول تنفيذ فئة استراتيجية بسيطة للغاية في Objective-C تسمح بتعريف الاستراتيجيات المضمونة بدلاً من تحديدها من خلال الميراث. حاليًا يبدو الرمز الخاص بي هكذا:

@interface SSTaskStrategy : NSObject {
    (NSArray *)(^strategy)(void);
}

@end

اعتقدت أن هذا سينجح ، لكنني أتلقى الخطأ

قائمة محددة متوقعة من قبل "(" ("الرمز المميز

أي أفكار كيف تجعل هذا العمل؟

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

المحلول

يجب عليك إسقاط الأقواس NSArray * في تعريف IVAR الخاص بك:

@interface SSTaskStrategy : NSObject {
    NSArray * (^strategy)(void);
}

@end

أيضا ، أوصي بشدة باستخدام أ typedef لمزيد من الوضوح:

typedef NSArray * (^Strategy)(void);

@interface SSTaskStrategy : NSObject {
   Strategy block;
}

@end

هذا يتيح لك الرجوع إلى هذه الكتلة مع الاسم Strategy بدلاً من الاضطرار إلى استخدام بناء الجملة غير التقليدي في كل مرة ترغب في الرجوع إليها.

نصائح أخرى

@interface SSTaskStrategy : NSObject {
    NSArray* (^strategy)(void);
}

لا تحتاج إلى وضع ( ) حول نوع العودة.

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