Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
objective-c委托语法查询_Objective C_Ios - Fatal编程技术网

objective-c委托语法查询

objective-c委托语法查询,objective-c,ios,Objective C,Ios,我不熟悉objective-c,对学员的使用方式非常困惑。我遇到了这段代码,我想用它来澄清一些疑问 #import <Foundation/Foundation.h> @protocol ProcessDataDelegate <NSObject> @required - (void) processSuccessful: (BOOL)success; @end @interface ClassWithProtocol : NSObject { id <

我不熟悉objective-c,对学员的使用方式非常困惑。我遇到了这段代码,我想用它来澄清一些疑问

#import <Foundation/Foundation.h>

@protocol ProcessDataDelegate <NSObject>

@required
- (void) processSuccessful: (BOOL)success;

@end

@interface ClassWithProtocol : NSObject 
{
  id <ProcessDataDelegate> delegate;
}

@property (retain) id delegate;

 -(void)startSomeProcess;

@end
在这里,有两处提到delegate一词,有人能解释一下在id斜括号delegate斜括号闭合的上下文中使用delegate一词的含义吗

同样,还有一个名为delegate的属性。它是否应该不会引起任何冲突


提前感谢,

没有,只有一个属性,由@property retain id delegate定义;另一个是NSObject的某种私有变量,它不是objective-c意义上的属性。。。然后,在.m文件中有@synthetize关键字,这将扩展属性

另一种表示法,id表示,委托应该符合某个协议

您可以从类访问这两个属性,但只能从外部访问属性。此外,对于一个属性,还生成了一些其他内容——在不使用ARC的情况下是retain,内存管理例程

为了消除混乱?讲座中,有一种很好的方法可以拥有类私有属性,当您在.m文件中而不是在匿名类别中定义它们时,如:

@interface MyClass()

@property (nonatomic, retain) NSString privateString;

@end

@implementation
@synthetize privateString;

// ...

@end

不,只有一个属性,由@property retain id delegate定义;另一个是NSObject的某种私有变量,它不是objective-c意义上的属性。。。然后,在.m文件中有@synthetize关键字,这将扩展属性

另一种表示法,id表示,委托应该符合某个协议

您可以从类访问这两个属性,但只能从外部访问属性。此外,对于一个属性,还生成了一些其他内容——在不使用ARC的情况下是retain,内存管理例程

为了消除混乱?讲座中,有一种很好的方法可以拥有类私有属性,当您在.m文件中而不是在匿名类别中定义它们时,如:

@interface MyClass()

@property (nonatomic, retain) NSString privateString;

@end

@implementation
@synthetize privateString;

// ...

@end
这一行:

id <ProcessDataDelegate> delegate;
您可以在中阅读有关这些内容的所有信息。

这一行:

id <ProcessDataDelegate> delegate;

您可以在中阅读有关此内容的所有信息。

IMHO也应该对该属性有协议要求。代码将按原样工作,但我发现编写@PropertyRetainideLegateIMO更为简洁,因为该属性也应该有协议要求。代码将按原样工作,但我发现编写@PropertyRetainideLegate更简洁