Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 创建以NSString值命名的对象-可能吗?_Objective C_Cocoa_Oop_Nsstring - Fatal编程技术网

Objective c 创建以NSString值命名的对象-可能吗?

Objective c 创建以NSString值命名的对象-可能吗?,objective-c,cocoa,oop,nsstring,Objective C,Cocoa,Oop,Nsstring,是否可以创建以NSString值命名的对象?如果是,怎么做?试试这个: Class theClass = NSClassFromString(someString); id object = [[theClass alloc] init]; 如果您的意思是字符串指定了类名,那么可以使用NSClassFromString函数查找相应的类工厂对象: NSString* myClassName = @"NSNumber"; id myNewObject = [[NSClassFromString(m

是否可以创建以NSString值命名的对象?如果是,怎么做?

试试这个:

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

如果您的意思是字符串指定了类名,那么可以使用NSClassFromString函数查找相应的类工厂对象:

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

// myNewObject is an NSNumber...
这个例子是虚构的,但你明白了。

是的:

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

//In your implementation
NSString *FrobnitzerCalibrationHigh = @"FrobnitzerCalibrationHigh";
NSString *FrobnitzerCalibrationMedium = @"FrobnitzerCalibrationMedium";
NSString *FrobnitzerCalibrationLow = @"FrobnitzerCalibrationLow";
您可以制作两个宏并将它们放在前缀标题中:

//Semicolons intentionally omitted (see below)
#define DECLARE_STRING_CONSTANT(name) extern NSString *name
#define DEFINE_STRING_CONSTANT(name) NSString *name = @#name
然后在类标题和实现中使用它们:

//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);
宏省略分号,因为它们的用法将提供分号。如果宏也有分号,则扩展将是extern NSString*FrobnitzerCalibrationHigh-在这种情况下是无害的,但如果我这样做会让我感到不安,主要是因为在其他一些情况下它不是无害的