-1

我还在学习objective-C,这段代码看起来很奇怪,很难得到一个好的搜索结果。

@interface Practice : NSObject 
{
   NSString *name;
   NSString *sortKey;
}

- (NSComparisonResult)sortPack:(Practice *)other
{
    return [[self sortKeyOrName] caseInsensitiveCompare:[other sortKeyOrName]]; 
}

这是我的问题:

  1. [self sortKeyOrName] 中的“或”可以是两个变量吗?如果是这样,它如何确定取哪个变量?

  2. 该过程在此调用中如何工作?这是我对此的看法,它比较 other 和 sortKeyOrName,然后返回它的 asc、desc 或相同,返回的值是否分配给 [self sorkeyOrName]?

谢谢你。

4

1 回答 1

1

首先,我建议您清楚地阅读Learning Objective-c,您并没有完全理解该语言,但是我已经这样做了很多年了,但我并没有完全理解该语言。

Instance变量namesortKey方法无关sortPack:。所以NO “或”并不意味着它可以是两个变量中的任何一个,sortKeyOrName是一个方法调用。

一个方法由三个组件组成,第一个是返回类型,所以在返回类型的情况下sortPack:NSComparisonResult. 然后是方法名称sortPack,最后是other必须是Practise *对象的参数。

所以你会像这样调用这个方法NSComparisonResult result = [self sortPack:object];

所以知道了这一点,我们现在可以看看这个方法的主体在做什么,因为我们现在sortPack返回 aNSComparisonResult意味着也[[self sortKeyOrName] caseInsensitiveCompare:[other sortKeyOrName]];必须返回 a NSComparisonResult

[[self sortKeyOrName] caseInsensitiveCompare:[other sortKeyOrName]];是首先得到一些结果,[self sortKeyOrName]因为这是一个返回一些东西的方法调用,然后它将它与返回的东西进行比较,[other sortKeyOrName]这也是另一个返回一些东西的方法调用。所以我们可以把它看作是在比较[@"SomeString" caseInsensitiveCompare:@"AnotherString"];(不确定这两种方法返回什么所以猜测字符串)

比较这两者后,它将sortPackNSComparisonResult.

希望您从链接中对此有更好的理解。

于 2013-06-11T14:10:51.297 回答