因为分类的本质也是结构体,这里没有实例变量的列表,添加进去存不了。(个人理解)
2、实际 *** 作检查的结果
1)创建分类的.h和.m文件
.h文件
.m文件(使用关联对象实现setter和getter方法)
2)打印类的实例变量列表
3)打印结果
从打印结果可以看出,time属性添加成功,getter和setter方法也实现了,touchesBegan方法点击也有响应,但是类的实例变量列表里没有_time。
1.从结构体可以知道,有属性列表,所以分类可以声明属性,但是分类只会生成该属性对应的get和set的声明,没有去实现该方法。2.结构体没有成员变量列表,所以不能声明成员变量。
方法可以运行时改变,结构体不能运行时改变,要想改变原结构体,增加一个属性,只能用关联变量的方式,而关联本质是在类的定义之外为类增加额外的存储空间,是一层映射关系
方法1:使用静态变量 (不推荐)方法2: 使用singleton pattern
方法3:把全局变量设置到AppDelegate中
例: 定义和使用一个全局变量"isLogin"
AppDelegate.h
@interface AppDelegate :UIResponder <UIApplicationDelegate>
@property (strong,nonatomic)UIWindow *window
@propertyBOOL isLogin
@end
AppDelegate.m
@implementation AppDelegate
@synthesize window =_window
@synthesize isLogin
@end
那么在其他的class里,则可以通过下列代码调用全局变量
AppDelegate *delegate=(AppDelegate*)[[UIApplicationsharedApplication]delegate]
delegate.isLogin=YES
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)