2、id类型可以代表所有对象的类型,可以任何类的对象赋值给id类型变量
idp=[[Personalloc]init];[psay:@"hello"];
3、oc没有类变量,但是可以通过内部全局变量来模拟类变量oc也提供了static关键字,但是static不能用于修饰成员变量,只能修饰局部变量,全局变量和函数,static修饰局部变量表示将该局部变量存储在静态存储区,static修饰全局变量用于限制全局变量只能在当前源文件中访问,static修饰函数用于限制函数只能在当前文件中调用
模拟类变量
User.h文件如下
#import<Foundation/Foundation.h>@interfaceUser:NSObject+(NSString*)nation;+(void)setNation:(NSString*)newNation;@end
User.m文件如下
#import"User.h"@implementUserstaticNSString*nation=nil;+(NSString*)nation{returnnation;}+(void)setNation:(NSString*)newNation{nation=newNation;}@endintmain(intargc,char*argc[]){@autoreleasepool{[UsersetNation:@"chenyu"];NSLog(@"nationis%@",[Usernation]);}}
4、单例模式
Singleton.h文件如下
#import<Foundation/Foundation.h>@interfaceSingleton:NSObject+(id)instance;@end
Singleton.m文件如下
@implemnetSingletonstaticidinstance=nil;+(id)instance{if(instance){instance=[[supermalloc]init];}returninstance;}@endintmain(intargc,char*argc[]){@autoreleasepool{NSLog(@"%d",[Singletoninstance]==[Singletoninstance]);}}