use*_*142 3 view objective-c uiviewcontroller
我有几种类型的os根视图控制器,我想一次实例化一个(每个函数调用一次).我想创建一个属性并将其分配给这个新创建的viewcontroller.问题显然是这个属性必须是一个特定的类型,依赖于它实例化的viewcontroller ...
有没有办法创建一个通用指针来克服这个....
确实存在通用指针类型; 它是id:
typedef struct objc_object {
Class isa;
} *id;
Run Code Online (Sandbox Code Playgroud)
这是在objc.h中定义的,是运行时的一部分.您可以将任何对象分配给类型为的指针id:
id myString = [[NSString alloc] init];
id myArray = [[NSArray alloc] init];
id myNumber = [[NSNumber alloc] init];
Run Code Online (Sandbox Code Playgroud)
当在Cocoa中编程时,它也可以NSObject *用作一种通用指针; 因为它是主要的根类,所以几乎每个对象都从它继承.然而,这并没有太大的收获(事实上,你会开始得到"可能无法响应"编译器警告),而且这不是惯用的.
通常,最好尽可能具体地键入变量.在这种情况下,由于所有对象都是某种视图控制器,我建议使用它UIViewController *作为变量类型.然后,任何继承自的对象UIViewController都可以分配给该指针,并且您仍然允许编译器进行类型检查.
这id就是Objective-C中的内容,一个无类型的Objective-C对象指针.
id test = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
等等
| 归档时间: |
|
| 查看次数: |
2860 次 |
| 最近记录: |