Objective c Or和返回值说明
我还在学习objective-C,这段代码看起来很奇怪,很难得到好的搜索结果Objective c Or和返回值说明,objective-c,Objective C,我还在学习objective-C,这段代码看起来很奇怪,很难得到好的搜索结果 @interface Practice : NSObject { NSString *name; NSString *sortKey; } - (NSComparisonResult)sortPack:(Practice *)other { return [[self sortKeyOrName] caseInsensitiveCompare:[other sortKeyOrName]]; }
@interface Practice : NSObject
{
NSString *name;
NSString *sortKey;
}
- (NSComparisonResult)sortPack:(Practice *)other
{
return [[self sortKeyOrName] caseInsensitiveCompare:[other sortKeyOrName]];
}
我的问题是:
谢谢。首先,我建议你清楚地阅读,因为你不完全理解这门语言,但我已经做了很多年了,我不完全理解这门语言
实例变量
name
和sortKey
与方法sortPack:
无关。因此,NO“或”并不意味着它可以是两个变量中的任何一个,sortKeyOrName
是一个方法调用
一个方法由三个部分组成:第一个是返回类型,因此在sortPack:
的情况下,返回类型是NSComparisonResult
。然后是方法名sortPack
,最后是参数other
,它必须是practice*
对象
因此,您可以调用此方法,如NSComparisonResult=[self-sortPack:object]代码>
知道了这一点,我们现在可以看看这个方法的主体在做什么,因为我们现在知道,sortPack
返回一个NSComparisonResult
,这意味着[[self-sortKeyOrName]caseInsensitiveCompare:[other-sortKeyOrName]
还必须返回一个NSComparisonResult
此[[self-sortKeyOrName]案例不敏感比较:[other-sortKeyOrName]]
所做的是首先从[self sortKeyOrName]
获得一些结果,因为这是一个返回某些内容的方法调用,然后它将其与[other sortKeyOrName]
返回的内容进行比较,后者也是另一个返回某些内容的方法调用。因此,我们可以将其视为比较[@“SomeString”不区分大小写比较:@“AnotherString”]代码>(不确定这两个方法返回什么,因此猜测字符串)
将这两个结果进行比较后,它将从sortPack
返回结果作为NSComparisonResult
希望您能从链接中更好地了解这一点。从哪里获得此代码?请阅读此代码主要是“方法和消息传递”。name
和sortKey
与sortPack
功能无关[self-sortkeyOrName]
是一个方法调用。[[self-sortKeyOrName]caseInsensitiveCompare:[other-sortKeyOrName]]的结果
将作为NSComparisonResult
返回给调用sortPack:
方法的任何人。感谢Popey提供的链接。这解释了我的很多问题@CRDave-仅用于练习目的的样本objective-c代码的随机搜索。Popey评论解决了我的疑问。