objective-c – 如何在协议中定义和实现属性

objective-c – 如何在协议中定义和实现属性,第1张

概述我想定义一个具有很少属性协议,并且需要在另一个NSObject子类中使用这些属性。请给我链接或示例代码。我需要使用10.5。 谢谢     请检查以下样品代码 @protocol MyProtocol@property (nonatomic, readonly) id someObject;@property (nonatomic, getter=isAlive) BOOL alive;@ 我想定义一个具有很少属性的协议,并且需要在另一个NSObject子类中使用这些属性。请给我链接或示例代码。我需要使用10.5。

谢谢
    请检查以下样品代码

@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 – 如何在协议中定义和实现属性所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1036743.html

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

发表评论

登录后才能评论

评论列表(0条)

保存