كيفية الإعلان عن وظيفة في الكاكاو بعد الدالة استخدامه؟

StackOverflow https://stackoverflow.com/questions/483664

سؤال

وأنا بناء ببطء طلبي إلى حالة العمل.

وأنا باستخدام ظيفتين دعا setCollection وaddToCollection. هذه الوظائف سواء استعرض NSArray كإدخال.

وأنا أيضا لها وظيفة تسمى add التي يمكنني استخدام كل من هذه الوظائف. عندما أحاول تجميع، كسكودي يظهر خطأ:

<اقتباس فقرة>   

'setCollection "غير معلن (أول استخدام في هذه المهمة)

وأعتقد أن هذا له علاقة مع وظيفة تسمى يجري هو موضح أدناه وظيفة النشطة. سوف تخمين آخر يكون أن مهام يجب أن العولمة لتكون صالحة للاستعمال داخل بلدي وظيفة add.

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

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

المحلول

إذا مهامكم عالمية (ليست جزءا من فئة)، لديك فقط لوضع الإعلان قبل الاستخدام، تماما مثل يقترح eJames.

إذا مهامكم هي في الواقع أساليب (جزء من الطبقة)، لديك ليعلن فئة مجهولة من صفك قبل التنفيذ ووضع الإعلانات طريقتك في هذه الواجهة:

@interface Myclass()
- (void) setCollection:(NSArray*)array;
- (void) addToCollection:(NSArray*)array;
@end

@implementation Myclass

// Code that calls setCollection or addToCollection

- (void) setCollection:(NSArray*)array
{
    // your code here
}

- (void) addToCollection:(NSArray*)array
{
    // your code here
}

@end

وبهذه الطريقة، لا تحتاج لفضح مهامكم في الواجهة الرئيسية للMyClass.

نصائح أخرى

ويمكنك إعلان وظائف في وقت مبكر كما يلي:

void setCollection(NSArray * array);
void addToCollection(NSArray * array);

//...

// code that calls setCollection or addToCollection

//...

void setCollection(NSArray * array)
{
    // your code here
}

void addToCollection(NSArray * array)
{
    // your code here
}

إذا كنت تقوم بإنشاء فئة مخصصة، وهذه هي وظائف الأعضاء (وتسمى عادة الأساليب في الهدف-C) فإنك سوف يعلن الطرق في رأس الصف وتحدد لهم في الملف المصدر صفك:

//MyClass.h:
@interface MyClass : NSObject
{

}

- (void)setCollection:(NSArray *)array;
- (void)addToCollection:(NSArray *)array;

@end

و

//MyClass.m:

#import "MyClass.h"

@implementation MyClass

- (void)setCollection:(NSArray *)array
{
    // your code here
}

- (void)addToCollection:(NSArray *)array
{
    // your code here
}

@end

و

//some other source file

#import "MyClass.h"

//...

MyClass * collection = [[MyClass alloc] init];
[collection setCollection:someArray];
[collection addToCollection:someArray];

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