نۇرمال ئەھۋالدا مودىل قۇرۇش ئۈچۈن ئاۋال ئوبكىت قۇرۇپ ئاندىن خاسلىقلىرىنى بىرىمىز . لىكىن كۆپرەك قۇرىدىغان ئىش بولسا قالسا بۇ سەل ئاۋارچىلىق بۇلىدۇ . Java
دا خاسلىقلىرى بىلەن مودىل قۇرغاندا زەنجىرسىمان ھالەتتە قىلساق ئوبدانلا قۇلايلى . ئەمدى بىز Objective-C دە بۇ خىل ئۇسۇلنى ئىشلىتپ باقايلى .
ئاساسلىق block
تىن پايدىلىنىمىز . ئەمسە كودنىلا قىستۇراي
SPSetting.h
//
// SPSetting.h
// Subat
//
// Created by GheniAblez on 2021/2/20.
// Copyright © 2021 subat. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface SPSetting : NSObject
+ (SPSetting *)init;
/** 名称 */
@property (nonatomic,copy) NSString *name;
- (SPSetting * _Nonnull (^)(NSString *name))addName;
/** Key */
@property (nonatomic,copy) NSString *key;
- (SPSetting * _Nonnull (^)(NSString *key))addKey;
/** 可选值 */
@property (nonatomic,copy) NSArray *values;
- (SPSetting * _Nonnull (^)(NSArray *values))addValues;
/** 类型 */
@property (nonatomic,assign) SPSettingType type;
- (SPSetting * _Nonnull (^)(SPSettingType))addType;
/** 网址 */
@property (nonatomic,copy) NSString *url;
- (SPSetting * _Nonnull (^)(NSString *url))addUrl;
@end
NS_ASSUME_NONNULL_END
SPSetting.m
//
// SPSetting.m
// Subat
//
// Created by GheniAblez on 2021/2/20.
// Copyright © 2021 subat. All rights reserved.
//
#import "SPSetting.h"
@implementation SPSetting
+ (SPSetting *)init{
return [[SPSetting alloc]init];
}
- (SPSetting * _Nonnull (^)(NSString *name))addName{
return ^SPSetting* (NSString *name){
self.name = name;
return self;
};
}
- (SPSetting * _Nonnull (^)(NSString *key))addKey{
return ^SPSetting* (NSString *key){
self.key = key;
return self;
};
}
- (SPSetting * _Nonnull (^)(SPSettingType type))addType{
return ^SPSetting* (SPSettingType type){
self.type = type;
return self;
};
}
- (SPSetting * _Nonnull (^)(NSArray * _Nonnull))addValues{
return ^SPSetting* (NSArray *values){
self.values = values;
return self;
};
}
- (SPSetting * _Nonnull (^)(NSString *key))addUrl{
return ^SPSetting* (NSString *url){
self.url = url;
return self;
};
}
@end
ئەمدى ئىشلەتكەن چاغدا مۇشۇنداق ئىشلەتسەكلا بۇلىدۇ .
SPSetting *setting = SPSetting.init.addName(@"Hello").addKey(@"test").addValues(@[SPString(@"")]).addUrl(@"fdasdda").addType(SPSettingTypeUrl);