Saya mendeklarasikan enum dalam file implementasi saya seperti yang ditunjukkan di bawah ini, dan mendeklarasikan variabel jenis itu di antarmuka saya sebagai PlayerState thePlayerState; dan menggunakan variabel dalam metode saya. Tapi saya mendapatkan kesalahan yang menyatakan bahwa itu tidak dideklarasikan. Bagaimana cara mendeklarasikan dan menggunakan variabel tipe PlayerState dengan benar dalam metode saya ?:
Dalam file .m
@implementation View1Controller
typedef enum playerStateTypes
{
PLAYER_OFF,
PLAYER_PLAYING,
PLAYER_PAUSED
} PlayerState;
dalam file .h:
@interface View1Controller : UIViewController {
PlayerState thePlayerState;
dalam beberapa metode dalam file .m:
-(void)doSomethin{
thePlayerState = PLAYER_OFF;
}
iphone
objective-c
c
RexOnRoids
sumber
sumber
Jawaban:
Anda
typedef
perlu berada di file header (atau file lain yang#import
diedit ke header Anda), karena jika tidak kompiler tidak akan tahu ukuran untuk membuatPlayerState
ivar. Selain itu, itu terlihat baik-baik saja bagi saya.sumber
NS_ENUM
dalam Objective-C jika Anda ingin enum Anda tersedia dalam kode Swift.typedef
mendeklarasikannya di.m
file dan mengkompilasi dan berjalan dengan baik.Apple menyediakan makro untuk membantu memberikan kompatibilitas kode yang lebih baik, termasuk Swift. Menggunakan makro terlihat seperti ini.
Didokumentasikan di sini
sumber
NS_ENUM
), karena lebih modern, dan sekarang diperlukan di Objective-C jika Anda ingin enum Anda tersedia dalam kode Swift.Dalam .h:
sumber
Dengan proyek saat ini Anda mungkin ingin menggunakan makro
NS_ENUM()
atauNS_OPTIONS()
.sumber
NS_ENUM
dalam Objective-C jika Anda ingin enum Anda tersedia dalam kode Swift.Beginilah cara Apple melakukannya untuk kelas-kelas seperti NSString:
Dalam file header:
Lihat Panduan Pengkodean di http://developer.apple.com/
sumber
Saya sarankan menggunakan NS_OPTIONS atau NS_ENUM. Anda dapat membaca lebih lanjut tentang ini di sini: http://nshipster.com/ns_enum-ns_options/
Berikut adalah contoh dari kode saya sendiri menggunakan NS_OPTIONS, saya memiliki utilitas yang menetapkan sublapisan (CALayer) pada lapisan UIView untuk membuat perbatasan.
H. mengajukan:
File .m:
sumber