在主线程以外的线程上更新 UI 是一个常见的错误,它可能导致错过 UI 更新、视觉缺陷、数据损坏和崩溃。
https://developer.apple.com/documentation/code_diagnostics/main_thread_checker
例子:
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if let data = data {
DispatchQueue.main.async { // Correct
self.label.text = "\(data.count) bytes downloaded"
}
}
}
task.resume()
Run Code Online (Sandbox Code Playgroud)
我的问题从这里开始 - 当我们说.async意味着与.main. 有人可以解释我的问题吗?
我正在研究一个自定义场景,其中我需要在运行时创建一个已定义类的对象,并为其设置属性.在Objective-C中有类似的东西
//The Model class
@interface Car:NSObject
{
@property(nonatomic,copy) NSString * numberOfDoors;
@property(nonatomic,copy) NSString * carModel;
@property(nonatomic,copy) NSString * carMake;
@property(nonatomic,copy) NSString * carBrand;
}
Run Code Online (Sandbox Code Playgroud)
为上面的类创建一个自定义的运行时对象(不确定这是否正确,但只是从头顶说话)
id myNewObject = [[NSClassFromString(@"Car") alloc]init];
[myNewObject setValue:@"4 doors" forKeyPath:@"numberOfDoors"];
[myNewObject setValue:@"Prius" forKeyPath:@"carModel"];
[myNewObject setValue:@"2014" forKeyPath:@"carMake"];
[myNewObject setValue:@"Toyota" forKeyPath:@"carBrand"];
Run Code Online (Sandbox Code Playgroud)
所以我的目的是创建一个对象映射模块,它将获取类名和对象映射信息,这些信息将描述如何从JSON响应映射/创建模型对象(与RestKit非常相似,减去核心数据同步部分) .
我知道这可以通过目标C完成,但不确定这将如何适用于swift类
任何帮助表示赞赏.
我想构建一个正则表达式来查找我的项目中使用的所有强制拆包,并且它应排除以下内容,
-带有IBOutlet声明!最后像
@IBOutlet weak var tableView: UITableView!
Run Code Online (Sandbox Code Playgroud)
-带有对象的声明!最后像
var separatorView: UIView!
Run Code Online (Sandbox Code Playgroud)
-不平等检查!喜欢
a != b or a ==! b
Run Code Online (Sandbox Code Playgroud)
我要匹配的陈述
我不想匹配的陈述
我尝试了这个,通过找到所有以!结尾的字符串,它几乎完成了所需的工作!但是它甚至显示了IBOutlet和变量声明,它们也以!结尾。所以没用。
\w+([!])
Run Code Online (Sandbox Code Playgroud)
而且这根本不匹配任何东西。
(?!^IBOutlet$).\w+([!])
Run Code Online (Sandbox Code Playgroud)
非匹配字符串的列表是@ IBOutlet,var,并让句子中可以包含!在最后。
我是Regex的初学者,因此可以提供任何帮助。
在ARC环境中,我MyClass *mcObj = [[MyClass alloc]init]使用它之后会有一个对象,如果我这样做,或者mcObj = nil;在使用它之后执行此操作.
此对象可以存在于任何范围内,例如全局viewcontroller或仅在方法内部,-(void)aMethod;请解释这两种情况.