首页 > 试题

prety

更新时间:2022-11-15 21:33:13 阅读: 评论:0

2018中考试卷语文-塔吊各部位名称图解


2022年11月15日发(作者:琥珀拾芥)

Objective-C中权限的使⽤

为啥要看OC中权限的使⽤:在写⼀个分类的时候,发现⽤不了extern中的property,然后我将property移动到了头⽂件,发现不能使⽤下划线

变量的⽅式访问,百思不得姐啊,O(∩_∩)O哈哈~,so要再次看看OC中的权限问题,下⾯是我移动到头⽂件后的出错代码

//QKLimitis头⽂件

@interfaceQKLimitis:NSObject

@property(nonatomic,copy)NSString*school;

@end

下⾯是他的⼀个分类

#import"QKLimitis+QKCategory.h"

@implementationQKLimitis(QKCategory)

-(void)urLimits

{

//这个可以使⽤

=@"清华⼤学";

//报错Uofundeclared'_school'

_school=@"清华⼤学";

}

@end

我好奇⼼⽐较重,在分类⾥边⽤_school报错,那么在他的⼦类⾥边会是啥样⼦了?

@implementationFromLimitis

-(void)urLimits

{

//报错Instancevariable'_school'isprivate

_school=@"清华⼤学";

//这个当然可以⽤啦

=@"清华⼤学";

}

@end

好家伙!分类⾥边说找不到,⼦类⾥边说是私有的,啦啦啦...不过这事⼉还不算完,为啥找不到了?我有做了个实验,我把分类的和那个类写在同

⼀个⽂件,奇迹出现了,分类⾥边竟然可以使⽤_school了

由此,对于proprety申明的东西,他的效果等于写了t和get⽅法加上在实现⽂件⾥边申明了⼀个带下划线的@private的成员变量。

接下来,我们在来细看权限问题我要测试⼦类,⾮⼦类中三种权限的访问

#import

@interfaceQKLimitis:NSObject

{

@privateNSString*age;

@protectedNSString*name;

@publicNSString*country;

}

@property(nonatomic,copy)NSString*school;

@end

@interfaceFromLimitis:QKLimitis

@end

@interfaceOtherClass:NSObject

@end

@interfaceQKLimitis(Category)

@end

实现⽂件

#import"QKLimitis.h"

@implementationQKLimitis

-(void)urLimits

{

//⾃⼰⾥边拥有所有权限

lf->age=@"23";

lf->name=@"李明";

lf->_school=@"清华⼤学";

=@"清华⼤学";

lf->country=@"中国";

}

@end

@implementationFromLimitis

-(void)urLimits

{

//继承类不可以访问私有成员下⾯两⾏报private错

lf->age=@"23";

lf->_school=@"清华⼤学";

//但是可以访问保护的成员

lf->name=@"李明";

lf->country=@"中国";

=@"清华⼤学";

}

@end

@implementationOtherClass

-(void)urLimits

{

QKLimitis*limitis=[[QKLimitisalloc]init];

//⾮继承类不仅不能访问私有成员下⾯两⾏报private错

limitis->age=@"23";

limitis->_school=@"清华⼤学";

//还不可以访问保护成员

limitis->name=@"李明";

limitis->country=@"中国";

=@"清华⼤学";

}

@end

@implementationQKLimitis(Category)

-(void)urLimits

{

//写在同⼀个⽂件⾥边的分类实现拥有所有权限

lf->age=@"23";

lf->name=@"李明";

lf->_school=@"清华⼤学";

=@"清华⼤学";

lf->country=@"中国";

_school=@"清华⼤学";

}

@end

总结⼀下

1.1头⽂件直接写的成员变量

@interfaceQKLimitis:NSObject

{

@privateNSString*age;

@protectedNSString*name;

@publicNSString*country;

}

@private只在该类中使⽤

@protected可以在继承类中使⽤

@public可以在其他类中使⽤

@private@protected@public在分类中都可以使⽤

1.2在头⽂件声明的@property

@property(nonatomic,copy)NSString*school;

会⽣成-(void)tSchool:(NSString)school;

-(NSString*)school;

和⽣成@private的_school,但这个不可以在分类中使⽤,如果要使⽤

需要在头⽂件中显⽰声明_school.类似于_name是放在.m⽂件中的

最后,如果发现有不⾜或者有误的地⽅,欢迎各路英雄好汉来指点。

本文发布于:2022-11-15 21:33:13,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/26827.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:踱步读音
标签:prety
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图