OC基本常識
2854 ワード
判定対象タイプ
ダイナミックジャンプページ
データストア
次に主にストレージオブジェクトの問題について説明します.オブジェクトを格納する場合はnscodingプロトコルを行います.保存と取り出しにはencoderとdecodeを使用する必要があります.オブジェクトに別のプライベートが含まれている場合.nscodingプロトコルはたくさん書かなければなりません.だから私たちは直接jsonを格納することができて、json自身は1つの文字列(一般的に1つの辞書)で、文字列に対して格納して、それから使う時辞書のモデルを回転します
[runtime問題](神経病院objc runtime入院試験)
-(BOOL) isKindOfClass: classObj
-(BOOL) isMemberOfClass: classObj
ダイナミックジャンプページ
- (void)pushByPrama:(NSDictionary *)pramas{
//
NSString *class = [NSString stringWithFormat:@"%@",pramas[@"class"]];
const char *className = [class cStringUsingEncoding:NSASCIIStringEncoding];
Class newClass = objc_getClass(className);
if (!newClass) {
//
Class superClass = [NSObject class];
newClass = objc_allocateClassPair(superClass, className, 0);
//
objc_registerClassPair(newClass);
newClass = objc_allocateClassPair(superClass, className, 0);
//
objc_registerClassPair(newClass);
}
//
id instance = [[newClass alloc]init];
//
NSDictionary *propertys = pramas[@"property"];
[propertys enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
//
if ([self checkIsExistPropertyWithInstance:instance verifyPropertyName:key]) {
// KVC
[instance setValue:obj forKey:key];
}
}];
//
UITabBarController *tabVC = (UITabBarController *)self.window.rootViewController;
UINavigationController *pushClassStance = (UINavigationController *)tabVC.viewControllers[tabVC.selectedIndex];
[pushClassStance pushViewController:instance animated:YES];
}
//
- (BOOL)checkIsExistPropertyWithInstance:(id)instance verifyPropertyName:(NSString *)verifyPropertyName
{
unsigned int outCount,i;
//
objc_property_t *properties = class_copyPropertyList([instance class], &outCount);
for (i = 0; i
データストア
次に主にストレージオブジェクトの問題について説明します.オブジェクトを格納する場合はnscodingプロトコルを行います.保存と取り出しにはencoderとdecodeを使用する必要があります.オブジェクトに別のプライベートが含まれている場合.nscodingプロトコルはたくさん書かなければなりません.だから私たちは直接jsonを格納することができて、json自身は1つの文字列(一般的に1つの辞書)で、文字列に対して格納して、それから使う時辞書のモデルを回転します
- (QDMySecureLevelResponse *)readBaseInfo{
// json
NSData *data = [UCSInfo shareInfo].safeCenterData;
NSDictionary *safeCenterData = [NSKeyedUnarchiver unarchiveObjectWithData:data];
QDMySecureLevelResponse *response = [QDMySecureLevelResponse mj_objectWithKeyValues:safeCenterData];
return response;
}
- (void)updataBaseInofoWithQDMySecureLevelResponse:(QDMySecureLevelResponse *)result{
NSDictionary *dict = result.mj_keyValues;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dict];
// json
[[UCSInfo shareInfo]setSafeCenterData:data];
}
[runtime問題](神経病院objc runtime入院試験)