IOS工程中如何去掉第三方的警告

 我来答
匿名用户
2017-09-26
展开全部
首先定义一个类#import@interfacePerson:NSObject@property(assign,nonatomic)NSIntegerage;-(void)run;@end#import"Person.h"@implementationPerson-(void)run{NSLog(@"%s",__func__);}@end定义分类#import"Person.h"@interfacePerson(Extention)@property(copy,nonatomic)NSString*name;-(void)saySex;@end#import"Person+Extention.h"#import@implementationPerson(Extention)//定义常量必须是C语言字符串staticchar*PersonNameKey="PersonNameKey";-(void)setName:(NSString*)name{/*OBJC_ASSOCIATION_ASSIGN;//assign策略OBJC_ASSOCIATION_COPY_NONATOMIC;//copy策略OBJC_ASSOCIATION_RETAIN_NONATOMIC;//retain策略OBJC_ASSOCIATION_RETAIN;OBJC_ASSOCIATION_COPY;*//**idobject给哪个对象的属性赋值constvoid*key属性对应的keyidvalue设置属性值为valueobjc_AssociationPolicypolicy使用的策略,是一个枚举值,和copy,retain,assign是一样的,手机开发一般都选择NONATOMICobjc_setAssociatedObject(idobject,constvoid*key,idvalue,objc_AssociationPolicypolicy);*/objc_setAssociatedObject(self,PersonNameKey,name,OBJC_ASSOCIATION_COPY_NONATOMIC);}-(NSString*)name{returnobjc_getAssociatedObject(self,PersonNameKey);}-(void)saySex{NSLog(@"%s----%@",__func__,self);}@end总结:在分类中@property不会生成_变量,也不会实现getter和setter方法,我们可以手动实现如下-(NSString*)name{return@"name";}-(void)setName:(NSString*)name{}但是这样是没什么意义的,而且分类中不允许定义变量,所以只能用runtime类实现
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式