我想知道是否有人可以解释以下内容,这些是否都在做同样的事情?由于两者都调用“setSeparatorColor”,我猜他们都会调用属性的访问者。
[myTableView setSeparatorColor:[UIColor orangeColor]];
[[self myTableView] setSeparatorColor:[UIColor orangeColor]];
加里。
答案 0 :(得分:3)
不完全相同。
在第一个版本中,您使用某个类的实例变量 - myTableView
。
在第二个版本中,您使用由同名方法返回的值。在第一步调用当前类的方法- (..)myTableView;
此方法返回一些值。在下一步 - 您使用返回对象的- (..)setSeparatorColor:..
方法。当然,经常(当您使用@synthesize myTableView;
或方法实现,如- (..)myTableView { return myTableView; }
)时,它与第一个版本中的变量相同,但它不是强制条件(取决于您的实现)。此外,- (..)myTableView;
可能会产生一些副作用/做额外的工作 - 而不仅仅是返回一个值。
示例(myTableView和[self myTableView]可以不同,具体取决于某些条件):
// myClass.h
@interface myClass : UIViewController {
UITableView *myTableView;
}
@property (nonatomic, retain) UITableView *myTableView;
@end;
// myClass.m
#import "myClass.h"
@implementation myClass
@dynamic myTableView;
- (UITableView *)myTableView {
return (someConditionIsTrue) ? myTableView : nil;
}
- (void)setMyTableView:(UITableView *)value {
if (myTableView != value) {
[myTableView release];
myTableView = [value retain];
}
}
@end;
答案 1 :(得分:-1)
正确,他们都在做同样的事情
[myTableView setSeparatorColor:[UIColor orangeColor]];
直接访问变量,其中为
[[self myTableView] setSeparatorColor:[UIColor orangeColor]];
调用属性的访问者,然后向其发送setSeparatorColor
消息