我对 iOS 领域相当陌生。来自 Java 和 Android 背景,我在学习 Objective-C 时面临一些挑战。
我的问题:我了解上述三个之间的不同之处,但我无法理解它们在实践中的用例。
我们是否需要为每个具有私有(private)函数的类进行类扩展? Category 有什么用,什么时候我们可以在 interface 中扩展一个 Cocoa/Cocoa-touch 类并添加自定义功能?请根据您的经验提供一些示例。
最佳答案
类别示例:
NSString+UrlString.h
#import <UIKit/UIKit.h>
@interface NSString(Additions)
+(void)urlMethod;
@end
NSString+UrlString.m//implmentation
#import "NSString+Additions.h"
@implementation NSString (Additions)
+(void)urlMethod
{
}
@end
类扩展用于在 Objective-C 中声明私有(private)方法
例如,在接口(interface)中将属性定义为只读,但在实现上面声明的类扩展中定义为读写,以便类的内部方法可以直接更改属性值。
类扩展声明的方法是在原始类的实现 block 中实现的,所以你不能在框架类上声明类扩展,比如像 NSString 这样的 Cocoa 或 Cocoa Touch 类。
声明扩展的语法使用 @interface 关键字,就像标准的 Objective-C
@interface ClassName ()
@end
您可能会发现您希望通过添加仅在某些情况下有用的行为来扩展现有类。 Please refer this
关于ios - 类扩展 vs 主接口(interface) vs 类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718620/