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类实现
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询