帮助我解决这个意想不到的麻烦。
if (view.tag != nil)
^^这对我有用,但突然我给视图分配了0个标签,现在一切都坏了。
如何查看视图是否已分配标记?
由于
答案 0 :(得分:6)
所有视图都有标记。默认为零0
这取决于你拥有的东西。我相信您应该考虑标记为0的视图是未标记的视图。并从1开始标记。
由于视图的tag属性属于NSInteger
,因此不能为nil
。 NSInteger
是原始类型,因此不能有nil
指针。分配给该属性的默认值为0
。
此外,当您将nil与0进行比较时,它在objective-c中给出YES。这是什么打破了你的逻辑。
if (view.tag != nil)
相当于if (view.tag != 0)
答案 1 :(得分:0)
标签是非负值。如果您没有设置视图的标记,那么它的默认标记为0.因此,您始终有一个与视图关联的标记。
在这方面,如果你设置标签> 0,那么你可以检查
TimerTimer.Timer(Sender: TObject);
begin
if downloaddata.Status = TTaskStatus.Running then
begin
//If it is already running don't start it again
Exit;
end;
downloaddata := TTask.Create (procedure ()
var //Create Thread var here
MyConnection : TFDConnection;
MyQuery : TFDQuery;
begin
//Do all your Query logic in here
//If you need to do any UI related modifications
TThread.Synchronize(TThread.CurrentThread,procedure()
begin
//Remeber to wrap them inside a Syncronize
end);
//If you have Query variables and this is running on mobile with ARC
//remember to set their connection : properties to nil to avoid memory leaks
//http:stackoverflow.com/questions/32010583/what-happens-to-database-connection-objectsmydac-tmyconnection-under-arc
MyQuery.connection := nil
end);
downloaddata.start
}
但你无法检查
if(tag>0){
//do something
}else{
//this is not your view
答案 2 :(得分:0)
有几点需要了解:
DNX Core 5
用于测试未分配的对象类型。nil
视为nil
,这就是它没有"火"。解决方案:
0
。tag > 0
进行测试。