2009-05-29 83 views

回答

3

试试这个:

Class theClass = NSClassFromString(someString); 
id object = [[theClass alloc] init]; 
1

如果你的意思是字符串指定类名,然后是很容易做到这一点使用的NSClassFromString功能来查找相应的类“工厂”对象:

NSString* myClassName = @"NSNumber"; 
id myNewObject = [[NSClassFromString(myClassName) alloc] init]; 

// myNewObject is an NSNumber... 

这个例子很有意思,但你明白了。

1

是:

//In your header 
extern NSString *FrobnitzerCalibrationHigh; 
extern NSString *FrobnitzerCalibrationMedium; 
extern NSString *FrobnitzerCalibrationLow; 

//In your implementation 
NSString *FrobnitzerCalibrationHigh = @"FrobnitzerCalibrationHigh"; 
NSString *FrobnitzerCalibrationMedium = @"FrobnitzerCalibrationMedium"; 
NSString *FrobnitzerCalibrationLow = @"FrobnitzerCalibrationLow"; 

可以使一对夫妇宏,把他们在您的前缀头:

//In your header 
DECLARE_STRING_CONSTANT(FrobnitzerCalibrationHigh); 
DECLARE_STRING_CONSTANT(FrobnitzerCalibrationMedium); 
DECLARE_STRING_CONSTANT(FrobnitzerCalibrationLow); 

//In your implementation 
DEFINE_STRING_CONSTANT(FrobnitzerCalibrationHigh); 
DEFINE_STRING_CONSTANT(FrobnitzerCalibrationMedium); 
DEFINE_STRING_CONSTANT(FrobnitzerCalibrationLow); 

//Semicolons intentionally omitted (see below) 
#define DECLARE_STRING_CONSTANT(name) extern NSString *name 
#define DEFINE_STRING_CONSTANT(name) NSString *name = @#name 

然后在你的类的头和实现使用它们

(宏忽略了分号,因为它们的用法将提供它们。如果宏具有分号作为分号在这种情况下,扩展将是extern NSString *FrobnitzerCalibrationHigh;;-无害,但如果我这样做会影响我,主要是因为它在其他情况下并非无害)。

相关问题