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创建属性吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)