美文网首页
OC中分类,拓展 和 swift中拓展

OC中分类,拓展 和 swift中拓展

作者: 小小志伟 | 来源:发表于2018-10-16 09:47 被阅读0次

OC中分类

分类创建

image

分类格式:

  • UIColor+ColorChange.h头文件
#import <UIKit/UIKit.h>

@interface UIColor (ColorChange)

// 颜色转换:iOS中(以#开头)十六进制的颜色转换为UIColor(RGB)
+ (UIColor *) colorWithHexString: (NSString *)color;
@end
  • UIColor+ColorChange.m文件
#import "UIColor+ColorChange.h"

@implementation UIColor (ColorChange)

+ (UIColor *) colorWithHexString: (NSString *)color
{

}
@end
  • 分类是在原有类的基础上添加新的方法。
  • 分类不能添加属性。
  • 分类如果非要添加属性也是可以的:通过runtime机制的associatedObject。ios分类添加属性

OC中拓展

本质:是分类,只是一种特殊情况。也就是匿名分类。

类扩展格式:

#import "ViewController.h"

@interface ViewController ()//类拓展

@property (nonatomic, strong) UILabel *lable;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

@end

目的:私有属性和方法。

实际中经常把属性和方法写到拓展里,外部类就不能访问。

类别与类扩展的区别:

名称 方法 属性
类别 可以添加 不能添加(需要associatedObject)
分类 可以添加 可以添加

swift中拓展

  • 为类拓展属性
extension UIView {
    private struct AssociatedKeys {
        static var DescriptiveName = "handle"
    }
    private var eventHanlerColsure : ()->() {
        get {
            guard let handler = objc_getAssociatedObject(self, &AssociatedKeys.DescriptiveName) as? ()->() else {
                return {()->Void in
                    
                };
            }
            return handler;
        }
        set(newHandle) {
            objc_setAssociatedObject(self, &AssociatedKeys.DescriptiveName, newHandle, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC);
        }
    }
}
  • 为类拓展方法
  • 协议中拓展:为了实现协议的方法。
  • 也可以类中添加拓展:进行结构分层。

swift中的拓展不负责私有属性和方法。因为swift的权限有关键词:public、private等等

引用:

相关文章

  • OC中分类,拓展 和 swift中拓展

    OC中分类 分类创建 分类格式: UIColor+ColorChange.h头文件 UIColor+ColorCh...

  • Swift入门基础6——扩展、泛型、协议

    扩展 Swift中的扩展,对应OC中的分类,可以用它来拓展类的功能。 可以扩展类的什么: 添加新的属性(只能是计算...

  • swift UIButton-图文排列

    swift 里没有OC的分类概念,但可以用extension为类拓展方法。 下面的extension 为UIBut...

  • iOS - swift 拓展问题

    在学习swift拓展的时候发现跟OC不同点就是不能和拓展类函数名同名,那如何才能使用拓展来替换原函数名呢? 建议先...

  • iOS 类拓展的加载

    什么是类拓展呢? 类拓展就是一个匿名的分类。 类拓展 分类 类拓展的作用 给当前的类增加属性和方法。 类拓展何时加...

  • Swift协议的动态、静态派发

    在Swift中协议具有强大的功能。通过拓展,不仅能在协议中添加已于方法的具体实现,还能添加新的方法。 通过协议拓展...

  • 如何在swift中实现oc分类

    在oc中为了增强已有类的功能,我们经常使用分类,但是在swift中没有分类这种写法了,相对应的是swift中只有扩...

  • 按位或操作

    1. OC 和 Swift 中的区别 OC中定义Options Swift 中定义Options ** 在Swif...

  • iOS 类拓展与分类以及关联对象

    1、类拓展是匿名的分类。2、类拓展可以为类添加属性和方法(类拓展添加的属性和方法是私有的)。3、类拓展在编译时作为...

  • 宝塔中安装mongodb拓展

    下载拓展安装包 解压和编译安装 在php中添加拓展关联

网友评论

      本文标题:OC中分类,拓展 和 swift中拓展

      本文链接:https://www.haomeiwen.com/subject/xqmczftx.html