Objective-C高级特性与应用实践
1. 类实例类型的不确定性
在使用Cocoa的内置类时,有时获取到的对象可能并非指定的确切类的实例,这可能是出于性能或兼容性的考虑。例如,使用以下代码:
id object = [NSString string];
BOOL isString = [object isKindOfClass: [NSString class]];
if ( isString )
NSLog( @"object is a string: %@", [object className] );
运行结果可能会让人惊讶,输出的类名可能是 NSCFString ,而不是预期的 NSString 。通常情况下,建议使用 -isKindOfClass: 方法,除非你确定需要的是特定类的实例。
2. 协议(Protocols)
2.1 协议的概念与作用
协议允许你指定一个对象需要响应一组特定的方法,而无需关心该对象所属的类。这在需要使用不同类型的对象协同工作时非常有用,即使这些对象没有共同的父类。
2.2 示例场景
假设要创建一个应用程序启动器,需要同时显示照片和网站书签。相关类的定义如下:
@interface Media : NSObject
@property (copy) NSS
超级会员免费看
订阅专栏 解锁全文
58

被折叠的 条评论
为什么被折叠?



