谢谢
请检查以下样品代码
@protocol MyProtocol@property (nonatomic,Readonly) ID someObject;@property (nonatomic,getter=isAlive) BOol alive;@end#import "MyProtocol.h"@interface MyCustomClass : NSObject <MyProtocol>{}@end#import "MyCustomClass.h"@implementation MyCustomClass@synthesize someObject,alive;/*- (ID)someObject { return nil;}- (BOol)isAlive { return YES;}- (voID)setAlive:(BOol)aBOol {}*/@end
**添加:
x86_64架构的代码与正常工作正常。但是如果我将架构更改为i386,那么我会收到以下警告:
MyCustomClass.m:13: error: synthesized property 'someObject' must either be named the same as a compatible ivar or must explicitly name an ivar error: synthesized property 'alive' must either be named the same as a compatible ivar or must explicitly name an ivar
我只想知道为什么它在x86_64中使用@synthesize,而不是在i386中。**
解决方法 @property刚刚向编译器说明,该类预计将定义与该属性匹配的方法。@protocol MyProtocol@property (nonatomic,getter=isAlive) BOol alive;@end
实现该协议的任何内容现在都需要
- (ID)someObject;- (BOol)isAlive;- (voID)setAlive:(BOol)aBOol;总结
以上是内存溢出为你收集整理的objective-c – 如何在协议中定义和实现属性全部内容,希望文章能够帮你解决objective-c – 如何在协议中定义和实现属性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)