2011-10-24 22 views
5

Bir Objective-C sınıfının başlığına C stili bir işlev koymaya çalışıyorum. (Benim terminolojim burada yanlış olabilir - Ben sadece fonksiyonlardan ziyade Objective-C sınıf metodlarını yazmaktayım).Obj-C üstbilgisinde işlev bildirimi

// Sort function 
NSInteger sort(NSString *aString, NSString *bString, void *context); 

NSInteger sort(NSString *aString, NSString *bString, void *context) { 
    return [aString compare:bString options:NSNumericSearch]; 
} 

Unforuntately bu sonuçlanır: Aşağıdaki gibi görülür,

Beklenen '=', ' ' ';', 'asm' veya' niteliğini' önce '{' belirteci

Eksik olduğum şeyler hakkında bir fikriniz var mı? Teşekkür ederim.

cevap

11

Tahminim, fonksiyon tanımını sınıfınızın @ arayüzüne dahil etmenizdir. - veya + C Trend yöntemleri ilan zaman unutmak gerekir

// declare C functions here 
NSInteger sort(NSString *aString, NSString *bString, void *context); 

@interface MyClass : NSObject 
{ 
    // class instance vars 
} 

// class properties & instance methods 
@end 
1

: Bunun yerine, emin C tarzı fonksiyon tanımlamaları Objective-C @interface bildirimleri dışında olduğundan emin olun. Sadece @end ifadesinden önce, bir standart C biri olarak yöntem bildirmek:

void function_name(int, int);

2

senin fonksiyonunun vücut .m dosyasında yerine başlığında olması gerekiyor.

İşlevinizin bildirimi (NSInteger sort(NSString *aString, NSString *bString, void *context);) başlıkta kaldığı sürece, başlığı içe aktardığınız her yerden sıralama işlevine hala erişebilirsiniz.

İlgili konular