iOS开发:分类添加属性,不会添加实例变量

iOS开发:分类添加属性,不会添加实例变量,第1张

1、不能在分类中添加实例变量的原因

因为分类的本质也是结构体,这里没有实例变量的列表,添加进去存不了。(个人理解)

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11640871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存