我对Objective-C并没有真正的经验。这是我遇到的问题。

当我想为类的特定实例定义一个指针时,我可以

NSString* foo;


但是是否可以为此类实例定义指针?

x* hotdog;  //"x" is the type of pointer hotdog is

hotdog = NSString;  //now points to NSString

hotdog* foo;  //an instance of NSString is created

hotdog = UIView;  //now points to UIView

hotdog* foo;  //an instance of UIView is created


如何定义类指针hotdog? (我应该用什么替换x?)

最佳答案

如果要使用指向在编译时尚不知道的类型的对象的指针(类似于C#中的dynamic),请使用id

id hotdog;
hotdog = [[NSString alloc] init];
hotdog = [[NSArray alloc] init];


仅在确实需要时执行此操作。如果在任何地方使用它,由于您将无法跟踪变量的类型,因此代码很容易变成一团糟。



起初我误解了你的问题。我将在这里留下旧答案,以防将来的访客需要。

指向类的指针的类型为Class,要获取该类型的对象,请使用+[NSObject class]

Class hotdog = [NSString class]; // now points to NSString
NSString *myString = [[hotdog alloc] init]; // create instance of NSString

hotdog = [NSArray class]; // now points to NSArray
NSArray *myArray = [[hotdog alloc] init]; // create instance of NSArray

10-05 18:31