博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
隐藏实现细节
阅读量:6835 次
发布时间:2019-06-26

本文共 2465 字,大约阅读时间需要 8 分钟。

类比UIButton的创建,创建按钮时:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];复制代码

按钮类型枚举:

typedef NS_ENUM(NSInteger, UIButtonType) {     UIButtonTypeCustom = 0,                         // no button type     UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0),  // standard system button          UIButtonTypeDetailDisclosure,     UIButtonTypeInfoLight,     UIButtonTypeInfoDark,     UIButtonTypeContactAdd,          UIButtonTypeRoundedRect = UIButtonTypeSystem,   // Deprecated, use UIButtonTypeSystem instead     };复制代码

我们来类比UIButton

Test:

#import 
typedef NS_ENUM(NSUInteger, CaiTestType) { TestTypeOne, TestTypeTwo, TestTypeThree};@interface Test : NSObject+ (Test *)createTest:(CaiTestType)type;- (void)doSomething;@end#import "Test.h"#import "TestOne.h"#import "TestTwo.h"#import "TestThree.h"@implementation Test+ (Test *)createTest:(CaiTestType)type{ switch (type) { case TestTypeOne: return [TestOne new]; break; case TestTypeTwo: return [TestTwo new]; break; case TestTypeThree: return [TestThree new]; break; default: break; }}- (void)doSomething{ //子类实现}@end复制代码

TestOne TestTwo TestThree

#import "TestOne.h"@implementation TestOne- (void)doSomething{    NSLog(@"---TestOne doSomething");}@end#import "TestTwo.h"@implementation TestTwo- (void)doSomething{    NSLog(@"---TestTwo doSomething");}@end#import "TestThree.h"@implementation TestThree- (void)doSomething{    NSLog(@"---TestThree doSomething");}@end复制代码

ViewController

#import "ViewController.h"#import "Test.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.        self.view.backgroundColor = [UIColor orangeColor];        Test *testOne = [Test createTest:TestTypeOne];    [testOne doSomething];        Test *testTwo = [Test createTest:TestTypeTwo];    [testTwo doSomething];        Test *testThree = [Test createTest:TestTypeThree];    [testThree doSomething];        Test *test = [Test createTest:TestTypeThree];    [test doSomething];}@end复制代码

打印结果:

2017-04-07 15:01:39.293 Test[58960:2605033] ---TestOne doSomething2017-04-07 15:01:39.293 Test[58960:2605033] ---TestTwo doSomething2017-04-07 15:01:39.293 Test[58960:2605033] ---TestThree doSomething2017-04-07 15:01:39.294 Test[58960:2605033] ---TestThree doSomething复制代码

转载地址:http://bgqkl.baihongyu.com/

你可能感兴趣的文章
数据仓库专题(2)-Kimball维度建模四步骤
查看>>
c++.net 托管类封装非托管类
查看>>
剑指offer系列之十:二进制中1的个数
查看>>
对技术的一点点看法
查看>>
用 Dagger 2 实现依赖注入
查看>>
浅析散列存储
查看>>
精读《Function VS Class 组件》
查看>>
关于startActivityForResult
查看>>
关于如何用100行如何实现docker
查看>>
Redis SLAVE过期键策略
查看>>
【PHP 开发】mac 下配置 PHP 环境的方法
查看>>
快收藏!52篇25万字,微服务、云原生、容器、K8S、Serverless精华文章集锦
查看>>
Glide加载gif图片优化
查看>>
C++ 基本数据类型
查看>>
面试笔记(2.JS
查看>>
在标签使用onclick(this)来传递参数
查看>>
做数据科学领域的「召唤师」,组织一场人人可参与的数据科学比赛
查看>>
Express 搭建web服务器
查看>>
Github 的 Pull Request 教程
查看>>
SmartRules让MindManager的交互图变得更加智能
查看>>