我仍然在学习Objective-C,而且这段代码看起来很奇怪而且难以获得良好的搜索结果。
@interface Practice : NSObject
{
NSString *name;
NSString *sortKey;
}
- (NSComparisonResult)sortPack:(Practice *)other
{
return [[self sortKeyOrName] caseInsensitiveCompare:[other sortKeyOrName]];
}
这是我的问题:
[self sortKeyOrName]中的“Or”可以是两个变量吗?如果是这样,它如何确定要采用哪个变量?
此过程如何处理?这是我对此的看法,它比较其他和sortKeyOrName然后返回,如果它的asc,desc或相同,并返回分配给[self sorkeyOrName]的值?
谢谢。
答案 0 :(得分:1)
首先,我建议你清楚地阅读Learning Objective-c,但是你并不完全理解这种语言,但是我已经多年来一直这样做,而且我并不完全理解这种语言。
实例变量name
和sortKey
与方法sortPack:
无关。所以 NO “或”并不意味着它可以是两个变量中的任何一个,sortKeyOrName
是方法调用。
方法由三个组件组成,第一个是返回类型,因此在sortPack:
的情况下,返回类型为NSComparisonResult
。然后有一个方法名sortPack
,最后是other
参数,它必须是Practise *
个对象。
因此,您可以将此方法称为NSComparisonResult result = [self sortPack:object];
知道这一点,我们现在可以查看此方法正在做什么,因为我们现在sortPack
返回NSComparisonResult
,这意味着[[self sortKeyOrName] caseInsensitiveCompare:[other sortKeyOrName]];
必须返回NSComparisonResult
也是。
这个[[self sortKeyOrName] caseInsensitiveCompare:[other sortKeyOrName]];
正在做的是首先从[self sortKeyOrName]
得到一些结果,因为这是一个方法调用,返回一些东西,然后它将它与从[other sortKeyOrName]
返回的内容进行比较。也是另一种返回东西的方法调用。所以我们可以把它看作是比较[@"SomeString" caseInsensitiveCompare:@"AnotherString"];
(不确定两种方法返回所以猜测字符串)
比较这两个后,它会将sortPack
的结果作为NSComparisonResult
返回。
希望你能从链接中更好地理解这一点。