我对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