Tra*_*ggs 4 properties objective-c ios ios7 xcode5
刚刚开始使用iOS 7进行iPhone编程,我发现很难掌握这些简单的属性.很难看出什么是相关的,什么不再相关,因为人们发现了关于它们的文档(官方或其他),因为事情已经在最近几个版本中发展.
我得到了基本模式,例如
@property (strong, nonatomic) NSString *name;
Run Code Online (Sandbox Code Playgroud)
我知道我应该引用_name,如果我想直接访问,但已经完成了属性,我可以/应该这样做self.name,并且会变成像[self setName: ...]或者[self name]我甚至可以实现这些来创建副作用的东西,那个我从他们那里得到了KVO的行为.
我想进入今天的新领域是拥有虚拟属性,因此我可以在访问/设置时使用点表示法,但我将定义访问/设置方法.更具体地说,我有一个具有以下"普通"属性的对象:
@property (strong, nonatomic) NSDate* started;
@property (strong, nonatomic) NSDate* paused;
@property (assign, nonatomic) BOOL repeat;
Run Code Online (Sandbox Code Playgroud)
我想添加一个status属性,该属性将返回/分配NSDictionary从这些值派生的属性."方法"部分我得到了如何写:
- (NSMutableDictionary*) status {
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
if (self.started != nil)
dict[@"started"] = self.started;
if (self.paused != nil)
dict[@"paused"] = self.paused;
if (self.repeat)
dict[@"repeat"] = @(YES);
return dict;
}
Run Code Online (Sandbox Code Playgroud)
和
- (void) setStatus: (NSDictionary*) doc {
self.started = doc[@"started"];
self.paused = doc[@"paused"];
self.repeat = doc[@"repeat"] != nil;
}
Run Code Online (Sandbox Code Playgroud)
我不知道的是,我添加了什么魔法酱,所以我可以使用self.status和self.status = @{}?在iOS 7/Xcode 5.我不需要这个虚拟/复合属性是KVO'able.
Mar*_*n R 15
只需添加
@property (strong, nonatomic) NSDictionary* status;
Run Code Online (Sandbox Code Playgroud)
到界面.由于您已为属性实现了setter和getter,因此编译器不创建任何访问器方法(并且没有后备实例变量
_status),并调用您的方法.
| 归档时间: |
|
| 查看次数: |
5845 次 |
| 最近记录: |