iphone – 可以使用公共的getter和私有setter创建属性吗?

iphone – 可以使用公共的getter和私有setter创建属性吗?,第1张

概述我想为我的实例变量使用属性,但在很多情况下,我只希望类本身能够访问setter.我希望我可以做这样的事情: foo.h中: @interface Foo { NSString *bar;}@property (readonly) NSString *bar;@end Foo.m: #import "Foo.h"@interface Foo ()@property (copy) NS 我想为我的实例变量使用属性,但在很多情况下,我只希望类本身能够访问setter.我希望我可以做这样的事情:

foo.h中:

@interface Foo {  Nsstring *bar;}@property (Readonly) Nsstring *bar;@end

Foo.m:

#import "Foo.h"@interface Foo ()@property (copy) Nsstring *bar;@end@implementation Foo@synthesize bar;@end

但这会产生警告:

Foo.m:4: warning: property ‘bar’ attribute in ‘Foo’ class continuation does not match class ‘Foo’ property

我可以看到它有什么抱怨,但它似乎仍然是一个有用的成语.有没有其他方法来完成这个没有写我自己的设置者?

解决方法 您的方法是正确的,但是类扩展中@property bar的重新声明必须与原始声明相匹配,除了reaDWrite和Readonly之外.所以这将工作:

foo.h中

@interface Foo {  Nsstring *bar;}@property (copy,Readonly) Nsstring *bar;@end

Foo.m:

#import "Foo.h"@interface Foo ()@property (copy,reaDWrite) Nsstring *bar;@end@implementation Foo@synthesize bar;@end

(回想一下默认是属性分配,而不是复制).

总结

以上是内存溢出为你收集整理的iphone – 可以使用公共的getter和私有setter创建属性吗?全部内容,希望文章能够帮你解决iphone – 可以使用公共的getter和私有setter创建属性吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: https://www.outofmemory.cn/web/1031699.html

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

发表评论

登录后才能评论

评论列表(0条)

保存