6 cocoa cocoa-touch objective-c accessor
我想在访问和更改属性时触发一些代码.我在我的代码中使用@property
和@synthesize
我的ivars.属性被保留,所以我想保留自动生成的内存管理内容@synthesize
.
但是,我假设@synthesize
告诉编译器在哪里生成访问器方法代码@synthesize is
,所以大多数情况都在代码的顶部,对吧?
当我有一个属性foo
,我得到-setFoo
和-foo
方法.那么我可以制作这样的方法,在更改属性时执行更多自定义代码吗?
-(void)setFoo {
// custom stuff
}
Run Code Online (Sandbox Code Playgroud)
现在这是一个问题.如何执行第一个?我不想在这里有一个不同的名字.有没有办法让@synthesize
指令为getter和setter方法创建其他名称,然后我可以轻松调用?然后我仍然可以使用点语法来访问它们?
你可以用@property
和@synthesize
,就像平时那样,而是提供了一个自定义的setter或getter(或两者)以及那些将被代替使用.通常我会做这样的事情:
// Override the setter
- (void)setName:(NSString *)aName
{
if (name == aName)
return;
[name release];
name = [aName retain];
//custom code here
}
Run Code Online (Sandbox Code Playgroud)
当我使用set属性时,它将调用我的自定义方法.但是,get仍将被合成.
归档时间: |
|
查看次数: |
2128 次 |
最近记录: |