我总是有一个类,只要对象处于活动状态,就需要设置一个计时器.通常是UIView,它做一些动画.
现在的问题是:如果我强烈引用NSTimer我创建并使-dealloc中的计时器失效并释放计时器,则永远不会使计时器失效或释放,因为从未调用-dealloc,因为运行循环保持对目标的强引用.那我该怎么办?如果我不能对计时器对象进行强烈的引用,这也是不好的,因为我可能需要一个引用才能阻止它.对物体的弱反射并不好,因为也许我会在它消失时访问它.所以最好保留我想要保留的东西.
你们是怎么解决这个问题的?superview必须创建计时器吗?那个更好吗?或者我应该真的只是做一个弱的参考,并记住运行循环对我的计时器有一个强大的参考,只要它没有失效?
假设我有一个电子邮件地址字符串,"John Smith" <JSmith@gmail.com>我想要的只是获取电子邮件地址<>
我怎么会这样做而没有得到其他一切?
我的字符串中有双反斜杠'\',需要转换为单反斜杠'\'.我已经尝试了几种组合,当我使用echo或更多的反斜杠被意外地添加到字符串时,整个字符串消失了.这个正则表达式的事情让我变得疯狂......哈哈......
我在其他失败的尝试中试过这个:
$pattern = '[\\]';
$replacement = '/\/';
?>
<td width="100%"> <?php echo preg_replace($pattern, $replacement,$q[$i]);?></td>
Run Code Online (Sandbox Code Playgroud)
如果这是一个愚蠢的问题我很抱歉,我很感激任何指针.
我最近对一些代码进行了一些分析,发现调用BitConverter时消耗的CPU占用量最大,如:
return BitConverter.ToInt16(new byte[] { byte1, byte2 });
Run Code Online (Sandbox Code Playgroud)
切换到类似的东西时:
return (short)(byte1 << 8 | byte2);
Run Code Online (Sandbox Code Playgroud)
我注意到性能的巨大提升.
我的问题是为什么使用BitConverter这么慢?我会假设BitConverter本质上是在内部进行相同类型的位移.
我有一个带有两个值(必填字段)的单选按钮,基于该值显示一个字段(有两个字段是隐式的,它是根据单选按钮的值显示的)应该是必需的.所以我对最初隐藏的字段使用了条件验证.
这是我的型号代码:
public function rules()
{
return [
[['receipt_no', 'date_of_payment', 'payment_method_id',
'total_amount'], 'required'],
['nonmember_name', 'required', 'whenClient' => function($model)
{
return $model->is_member == 2;
}, 'enableClientValidation' => false],
['member_id', 'required', 'whenClient' => function($model)
{
return $model->is_member == 1;
}, 'enableClientValidation' => false],
[['receipt_no', 'date_of_payment', 'payment_method_id',
'total_amount','is_member'], 'required','on' => 'receipt'],
];
}
Run Code Online (Sandbox Code Playgroud)
我用的是一个场景receipt,is_member就是单选按钮字段.如果我选择值1,is_member那么字段member_id是可见的,它应该是必需的.如果is_member值为2则nonmember_name显示,它应该成为必填字段.凭借我在模型中的代码,我设法实现了它.但现在使用此模型的其他操作(将新数据行保存到模型中)存在错误
数组([nonmember_name] =>数组([0] =>名称不能为空.))
所以我的问题是我如何才能对场景进行特定的条件验证(我认为我的错误是由条件验证中定义的必需规则引起的)
编辑:
这是我的单选按钮
<?= $form->field($model, 'is_member')->radioList(array('1'=>'Member',2=>'Non Member'))->label('Member or Not'); ?>
Run Code Online (Sandbox Code Playgroud) 这是我的代码
private final static String Dir = "/data/data/org.xbmc.kodi/cache/";
private void deleteDir(){
try{
/*File dir = Utils.getCacheDir(null, this, false, true);
File path = new File(dir.getParentFile(), Dir);
delete(path);*/
String command = "rm -r "+Dir;
Process process = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes(command + "\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
}catch(Exception e){}
}
Run Code Online (Sandbox Code Playgroud)
问题是当我运行它时它会删除该文件夹。但我不想删除该文件夹。我想删除里面的所有文件。
我正在使用ctime.但是它总是返回NULL.所以它在sprintf线上核心.它工作得更早.所以不确定为什么它会随机返回NULL?
我有以下代码片段:
int main()
{
char avp_val[50];
uint32_t date_value=1477069401;
sprintf(avp_val,"%s",ctime((time_t*)(&date_value)));
return;
}
Run Code Online (Sandbox Code Playgroud) 我试图把单词分成音节,但是我的语言(Setswana)中的那种音节.在元音之后每次出现音节,例如在"motho"(意思是人)中,音节是"mo"和"tho".它们被元音分开,因此识别元音是一个主要关键
我需要一个代码来识别一个元音并分割一个单词的一部分,1个每个可用的单元...这是我到目前为止所拥有的:
public void syllable(String word)
{
int i=0;
int z=0;
for (i=i;i<word.length()-1; i++){
char w = word.charAt(i);
String w1=Character.toString(w);
if(w=='a'|| w=='e' || w=='i' || w=='o' || w=='u')
{
String[] x= word.split(w1,2);
System.out.println(Arrays.toString(x));
//z=i;
continue;
}
continue;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在学习C++ Primer第5版.在页479,它提到了
string sum = accumulate(v.cbegin(), v.cend(), "");因为no + on const char*"" 而不正确
类型v是顺序容器,例如矢量.
我发现使用双引号创建字符串是危险的,特别是对于使用通用算法的情况,因为它需要对象的已定义运算符.
但我无法弄清楚描述的no + on const char*含义是什么?
它会调用string (const char* s);c-string中定义的构造函数吗?
我认为这是编译器所做的,因为它解释了用C++中的引号初始化的字符串.
我们应该用双引号创建一个字符串吗?它会导致overriding on operators失败.