我在后台线程上有一些计算工作,之后我需要更新一些calayer的转换,我试试用
dispatch_async(dispatch_get_main_queue(), ^{calayer.transform = newTransform});
Run Code Online (Sandbox Code Playgroud)
和
CFRunLoopPerformBlock(CFRunLoopGetMain(), kCFRunLoopCommonModes, ^(void) {calayer.transform = newTransform});
Run Code Online (Sandbox Code Playgroud)
我只是觉得它们是一样的,但是当我使用dispatch_async时,我发现calayer工作得很顺利(可能?).这两个功能有什么不同?
我有一个从可编码继承的协议
protocol OrderItem:Codable {
var amount:Int{get set}
var isPaid:Bool{get set}
}
Run Code Online (Sandbox Code Playgroud)
结构符合此协议
struct ProductItem:OrderItem {
var amount = 0
var isPaid = false
var price = 0.0
}
Run Code Online (Sandbox Code Playgroud)
然而,当我把这个结构放入可编码的结构时,我得到了错误
struct Order:Codable {
var id:String
var sn:String = ""
var items:[OrderItem] = []
var createdAt:Int64 = 0
var updatedAt:Int64 = 0
}
Run Code Online (Sandbox Code Playgroud)
错误是
Type 'Order' does not conform to protocol 'Encodable'
Type 'Order' does not conform to protocol 'Decodable'
Run Code Online (Sandbox Code Playgroud)
但如果我更改项目:[OrderItem]到项目:[ProductItem],一切正常!
我该如何解决这个问题?
有很多关于创建用户而不使用 Firebase Web SDK 登录用户的讨论。我创建了一个Cloud Function并使用Admin SDK创建了一个用户:
exports.createUser = functions.https.onRequest((request, response) => {
const param = request.body
admin.auth().createUser({
email: param.email,
emailVerified: false,
password: param.password,
})
})
Run Code Online (Sandbox Code Playgroud)
但在我的 angular2 应用程序中,我必须使用 HTTP 将电子邮件和密码发布到 Cloud Functions for Firebase。在不加密密码的情况下执行此操作安全吗?