Iphone 调用@property访问器?
我想知道是否有人能解释一下,这两种方法都是一样的吗?由于两者都调用“setSeparatorColor”,我猜它们都在调用属性的访问器Iphone 调用@property访问器?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我想知道是否有人能解释一下,这两种方法都是一样的吗?由于两者都调用“setSeparatorColor”,我猜它们都在调用属性的访问器 [myTableView setSeparatorColor:[UIColor orangeColor]]; 加里。没错,他们都在做同样的事 [myTableView setSeparatorColor:[UIColor orangeColor]]; 是直接访问变量,其中 [[self myTableView] setSeparatorColor:[UIC
[myTableView setSeparatorColor:[UIColor orangeColor]];
加里。没错,他们都在做同样的事
[myTableView setSeparatorColor:[UIColor orangeColor]];
是直接访问变量,其中
[[self myTableView] setSeparatorColor:[UIColor orangeColor]];
调用属性的访问器,然后向其发送setSeparatorColor
消息
在第一个版本中,您使用某个类的实例变量-myTableView
在第二个版本中,您使用相同命名方法返回的值。第一步,当前类的方法-(..)myTableView此方法返回一些值。在下一步中,使用返回对象的-(..)setSeparatorColor:..
方法。当然,通常(当您使用@synthesis myTableView;
或类似-(..)myTableView{return myTableView;}
的方法实现时),它与第一个版本中的变量相同,但不是强制条件(取决于您的实现)。此外,-(..)myTableView代码>可能有一些副作用/做额外的工作-而不仅仅是返回值
示例(myTableView和[self myTableView]可能不同,具体取决于某些条件):
不,它们不一样。第一个直接访问实例变量。
[[self myTableView] setSeparatorColor:[UIColor orangeColor]];
// 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;