我最近了解了objective-c中的关联对象以及如何实现它们.根据我的理解,如果您只拥有一个对象的单个实例,则它们会很有用.
我无法想到objective-c中关联对象的任何特定用例(意味着我不能使用其他方法做的用例).
有没有人具有何时使用关联对象的具体示例?
当 Apple 错误地设计了一个类,导致您无法对其进行子类化时,它非常有用。
一个很好的例子是NSURLSessionDownloadTask。假设当您创建任务时,您希望向其附加一段数据,以便在最终任务委托消息到达时检索。
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location {
// retrieve data from downloadTask here
}
Run Code Online (Sandbox Code Playgroud)
但你不能继承 NSURLSessionDownloadTask 的子类;你必须接受 NSURLSession 给你的任务。因此您无法通过正常方式向其附加任何数据。这种情况下的一种解决方案是关联对象。
就我个人而言,我希望每个对象的行为都像 CALayer 和 CAAnimation 一样,您可以在其中以键值对的形式向其附加任意数量的数据,就好像该对象其次是一种 NSDictionary 一样。
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |