OC课堂笔记->KVC

KVC(key,value,coding)
1.key:键,用于标识实例变量;value:实例变量对应的值
2.修改值
setValue: forKey:
setValue: forKeyPath:
setValue:forUndefinedKey;
setValuesForKeysWithDictionary:
3:获取值
valueForKey
valueForKeyPath
valueForUndefinedKey
当Key不存在的时候,会执行setValue:forUndefineKey:

4://KVC工作流程

    //KVC首先检查类中,是否有相应的getter,setter方法;

    //如果有就调用,如果没有就去找有没有和key相同名字的实例变量.

    //如果也没有,就去找有没有和_key相同名字的实例变量;

5:    //第一个方法

    //设置值----->[t1 setValue:@"苍老师" forKey:@"name"];

    [t1 setValue:@"苍老师" forKey:@"name"];

    //取值----->[t1 valueForKey:@"name"]

    NSLog(@"%@",[t1 valueForKey:@"name"]);

    //第二种方法

    [t1 setValue:@18 forKey:@"age"];

    NSLog(@"%ld",[[t1 valueForKey:@"age"] integerValue]);

    

    //第三种

    Student * s1 = [[Student alloc] init];

    [t1 setValue:s1 forKey:@"stu1"];

    [t1 setValue:@"大师兄" forKeyPath:@"stu1.name"];

    //第四种

    NSLog(@"%@",[t1 valueForKeyPath:@"stu1.name"]);

    //第五种

    NSDictionary * dict = @{@"name":@"唐僧",@"age":@20,@"stu1":s1,@"1":@"a"};

    [t1 setValuesForKeysWithDictionary:dict];

    NSLog(@"%@",[t1 valueForKeyPath:@"name"]);

    //第六种

在.m中实现

- (void)setValue:(id)value forUndefinedKey:(NSString *)key

{

    NSLog(@"%@   %@没有找到",key,value);

}


我再使用多进程时,在下列代码中unsigned WINAPI MyThreadFunction(LPVOID lpParam) { while (openFlag) { UF_UI_lock_ug_access(UF_UI_FROM_CUSTOM); //给主线程加锁(不锁上的话,在点击应用后再点击调取命令会崩掉或死循环的可能) char message[256]; //错误信息 getVariableDir("VT_APPLICATION_DIR", czApplicationDir); if (!isDirHas(czApplicationDir)) { UF_UI_open_listing_window(); UF_UI_write_listing_window("读取 VT_APPLICATION_DIR 环境变量失败 \n"); return false; } char czCfgDataP[256]; //表格完整路径 strcpy_s(czCfgDataP, czApplicationDir); strcat_s(czCfgDataP, "\\data\\标准化配置\\设计标准配置表.xls"); if (!isDirHas_Chs(czCfgDataP)) { sprintf_s(message,"(%s)不存在 \n", czCfgDataP); UF_UI_open_listing_window(); UF_UI_write_listing_window(message); return false; } Book* book; if (!load(czCfgDataP, &book)) { sprintf_s(message, "加载(%s) 失败 \n", czCfgDataP); UF_UI_open_listing_window(); UF_UI_write_listing_window(message); book->release(); return false; } Sheet* voiceSheet;//声音数据页 if (!getSheet(book, "材料", &voiceSheet)) { UF_UI_open_listing_window(); UF_UI_write_listing_window("加载 (材料) 数据 失败 \n"); book->release(); return false; } vAllVoiceSt.clear(); vVoiceStr.clear(); if (!readStr_Col(voiceSheet, 0, vVoiceStr)) { UF_UI_open_listing_window(); UF_UI_write_listing_window("加载 (材料) 材质类型 失败 \n"); book->release(); return false; } for (size_t i = 0; i < vVoiceStr.size(); i++) { vector<CString>vTempStr; if (!readStr_Col(voiceSheet, i, vTempStr)) { continue; } vAllVoiceSt.push_back(vTempStr); break; } book->release(); HANDLE g_hMutex = CreateMutex(NULL, FALSE, NULL); if (vAllVoiceSt.size() && tempStrUi && openFlag) { string excelDate = (LPCSTR)(CStringA)(vAllVoiceSt[0][0]); if (!excelDate.empty()) { vector<NXString>tempStr; tempStr.push_back((NXString)excelDate.c_str()); tempStrUi->SetEnable(true); tempStrUi->SetValue(tempStr); tempStrUi->SetEnable(false); } else { vector<NXString>tempStr; tempStr.push_back(""); tempStrUi->SetEnable(true); tempStrUi->SetValue(tempStr); tempStrUi->SetEnable(false); } } ReleaseMutex(g_hMutex); UF_UI_unlock_ug_access(UF_UI_FROM_CUSTOM); //给主线程关锁 Sleep(500); // Simulate work with a sleep call. } return 0; } tempStrUi->SetValue(tempStr);这句代码总是会导致NX2206崩溃该如何解决?
07-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值