هل من الممكن تحديد كتلة كعضو في الفصل؟
-
30-09-2019 - |
سؤال
أحاول تنفيذ فئة استراتيجية بسيطة للغاية في 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);
}
لا تحتاج إلى وضع (
)
حول نوع العودة.
لا تنتمي إلى StackOverflow