DispatchQueue.global(qos: .userInitiated).async { //3
let data = NSData(contentsOf: URL(string: urlString)!) // 3.1 ( chỉ số này em thêm vào)
DispatchQueue.main.async { //4
cell?.img.image = UIImage(data: data as! Data) // 4.1
}
}
Từ đoạn code trên em có một câu hỏi mà em thắc mắc mãi muốn hỏi anh đó là câu lệnh 3.1 sẽ gán cho hàng đợi DispatchQueue.global để nó thưc hiện và câu lệnh 4.1 sẽ gán cho hàng đợi DispatchQueue.main để thực hiện mà 2 hàng đợi này sẽ chạy đồng thời nhau thì làm sao biết cái ảnh ở câu lệnh 3.1 đã tải xuống thành công hay chưa mà để câu lệnh 4.1 thực hiện a. Mong anh trả lời giúp em ạ.
Chào bạn, cảm ơn bạn vì bài viết rất hay. Nhưng mình có 1 chút thắc mắc mong được bạn giải đáp:
" Mỗi một class hay module ngoài các trường ở trên còn có thêm 2 trường nữa:..." => Không có đề cập tới class method của class, vậy chúng được lưu trữ ở đâu?
"m_tbl: “Method Table”, một bảng băm chứa đựng địa chỉ các instance method của class hay module", vậy là vùng nhớ của cái class kia chỉ có lưu bảng băm chứa ĐỊA CHỈ (dạng như con trỏ). Vậy dữ liệu thực tế của những instance method đó được tổ chức ở đâu? chả lẽ lại tổ chức instance method của 1 class ở 1 vùng nhớ xa xôi nào đó mà không tổ chức trong phạm vi vùng nhớ của class đó sao?
Bài viết này áp dụng cho Swift 3.0.1 (Trong link gốc có viết rõ nhưng chắc người dịch quên) .
Ở Swift 3.0.1 nếu để private thì nó chỉ gọi được trong phạm vi scope (tức là chỉ trong đoạn khai báo class), extension sẽ không gọi được (compile lỗi).
Điều này đã được thay đổi ở Swift 4. nên bạn compile sẽ không còn lỗi nữa =))
Sau khi đọc xong bất kì một tài liệu nào mà không hiểu thì có hai khả năng, một là do người viết, hai là do chính mình.
Nếu bạn tìm thấy bài tiếng Anh gốc thì giỏi đấy.
Có hai cách để học, một là tự học, hai là học từ sách vở hoặc từ người khác ...
Và vì tôn trọng nhau, nên ghi nguồn, dịch thì đã ghi nguồn và nói ngay từ đầu cho khỏe, khỏi nhọc công viết.
Thank for your attention, I was (+1) your comment.
extension Person {
func printJobTitle() {
print("My job is (jobTitle)")
// Chỗ này sẽ compile lỗi vì jobTitle được gọi ngoài scope của class Person.
}
}
=> private vẫn dùng được trong extension của nó mà bạn ơi
"Trong folder app/Modules, chúng ta sẽ tạo 1 service provider trong file ServiceProvider.php."
Làm sao để tạo file ServiceProvider trong Modules nhỉ, ý mình là có cách nào tạo = console không? Chứ chả nhẻ đi copy bỏ vào
@minhtuancnttk39 À, Viblo là cho phép hiện nguyên tag HTML của users nhập vào, chứ không phải là cho phép render tag HTML ra. Viblo chỉ cho render một vài tag HTML như là <br> hay <hr> thôi
Ví dụ khi em gõ <br> sẽ được 1 dòng mới, gõ <hr> sẽ được 1 đường thẳng, chứ nó không hiện ra chữ <br> và <hr> như các thẻ
hay <span></span> ... khác.
Có vẻ ý em là muốn khi người dùng nhập và đoạn text
thì nó phải được render ra đúng thế, thay vì trở thành một phần html của trang web, đúng không nhỉ? Vậy thì có lẽ anh hiểu nhầm, anh lại hiểu ngược lại, nên trả lời chưa đúng trọng tâm cho lắm
Nếu em muốn render ra được các tag HTML dưới dạng text, thì em cần escape các ký tự đặc biệt đi là được:
@huukimit Việc hiển thị không là vấn đề a ạ, nhưng cái có vấn đề ở đây là:
Bài viết của e có thể có HTML để làm ví dụ ấy ạ...
Và khi em copy nguyên một cái html nào đó, paste vào markdown editor rồi nhấn đăng bài viết thì nguyên bài đăng không hiện nội dung của bài viết mà là Render thành một trang con trong bài viết dựa trên các mã html được viết trong đó ạ..
THẢO LUẬN
Code chán quá. Vừa download thư viện, vừa implement trong Grandle. Nửa vời
Day ko phai la ZXing chinh chu.
DispatchQueue.global(qos: .userInitiated).async { //3 let data = NSData(contentsOf: URL(string: urlString)!) // 3.1 ( chỉ số này em thêm vào) DispatchQueue.main.async { //4 cell?.img.image = UIImage(data: data as! Data) // 4.1 } }
Từ đoạn code trên em có một câu hỏi mà em thắc mắc mãi muốn hỏi anh đó là câu lệnh 3.1 sẽ gán cho hàng đợi DispatchQueue.global để nó thưc hiện và câu lệnh 4.1 sẽ gán cho hàng đợi DispatchQueue.main để thực hiện mà 2 hàng đợi này sẽ chạy đồng thời nhau thì làm sao biết cái ảnh ở câu lệnh 3.1 đã tải xuống thành công hay chưa mà để câu lệnh 4.1 thực hiện a. Mong anh trả lời giúp em ạ.
Cho e hỏi Lang::setLocale(Session::get('locale')) tương tự như App::setLocale(Session::get('locale')) phải k ạ
cảm ơn bài viết của bạn, nhưng phần fix lỗi ở phần 2 câu lệnh "var self = this" bạn phải bặt bên ngoài forEach() bên trong showTarget()
Mỗi lần sửa trong component lại phải rundev lại mất thời gian quá, có cách nào k anh.
một container được attached vào 2 network.
Bạn có thể dẫn link cho mình tài liệu nói về điều này không ?
Không phải minh_dai nhé. <T> được hiểu là phương thức này có một tham số kiểu T.
Chào bạn, cảm ơn bạn vì bài viết rất hay. Nhưng mình có 1 chút thắc mắc mong được bạn giải đáp:
" Mỗi một class hay module ngoài các trường ở trên còn có thêm 2 trường nữa:..." => Không có đề cập tới class method của class, vậy chúng được lưu trữ ở đâu?
"m_tbl: “Method Table”, một bảng băm chứa đựng địa chỉ các instance method của class hay module", vậy là vùng nhớ của cái class kia chỉ có lưu bảng băm chứa ĐỊA CHỈ (dạng như con trỏ). Vậy dữ liệu thực tế của những instance method đó được tổ chức ở đâu? chả lẽ lại tổ chức instance method của 1 class ở 1 vùng nhớ xa xôi nào đó mà không tổ chức trong phạm vi vùng nhớ của class đó sao?
Cảm ơn bạn.
ừa, sorry =))
Bài viết này áp dụng cho
Swift 3.0.1
(Trong link gốc có viết rõ nhưng chắc người dịch quên) .Ở Swift 3.0.1 nếu để private thì nó chỉ gọi được trong phạm vi scope (tức là chỉ trong đoạn khai báo class), extension sẽ không gọi được (compile lỗi). Điều này đã được thay đổi ở
Swift 4.
nên bạn compile sẽ không còn lỗi nữa =))@daotran
Anh @thangtd90 đã trả lời giúp mình rồi nhé, bài viết này mình cũng học hỏi rất nhiều từ anh ấy.
Sau khi đọc xong bất kì một tài liệu nào mà không hiểu thì có hai khả năng, một là do người viết, hai là do chính mình.
Nếu bạn tìm thấy bài tiếng Anh gốc thì giỏi đấy.
Có hai cách để học, một là tự học, hai là học từ sách vở hoặc từ người khác ... Và vì tôn trọng nhau, nên ghi nguồn, dịch thì đã ghi nguồn và nói ngay từ đầu cho khỏe, khỏi nhọc công viết.
Thank for your attention, I was (+1) your comment.
class Person { private var jobTitle = "" }
extension Person { func printJobTitle() { print("My job is (jobTitle)") // Chỗ này sẽ compile lỗi vì jobTitle được gọi ngoài scope của class Person. } } => private vẫn dùng được trong extension của nó mà bạn ơi
cái này ml thôi dl hơi vui mồm
"Trong folder app/Modules, chúng ta sẽ tạo 1 service provider trong file ServiceProvider.php." Làm sao để tạo file ServiceProvider trong Modules nhỉ, ý mình là có cách nào tạo = console không? Chứ chả nhẻ đi copy bỏ vào
@minhtuancnttk39 À, Viblo là cho phép hiện nguyên tag HTML của users nhập vào, chứ không phải là cho phép render tag HTML ra. Viblo chỉ cho render một vài tag HTML như là
<br>
hay<hr>
thôiVí dụ khi em gõ
hay <span></span> ... khác.<br>
sẽ được 1 dòng mới, gõ<hr>
sẽ được 1 đường thẳng, chứ nó không hiện ra chữ<br>
và<hr>
như các thẻCó vẻ ý em là muốn khi người dùng nhập và đoạn text
thì nó phải được render ra đúng thế, thay vì trở thành một phần html của trang web, đúng không nhỉ? Vậy thì có lẽ anh hiểu nhầm, anh lại hiểu ngược lại, nên trả lời chưa đúng trọng tâm cho lắm
Nếu em muốn render ra được các tag HTML dưới dạng text, thì em cần escape các ký tự đặc biệt đi là được:
Chẳng hạn như dùng hàm đơn giản như thế này:
Tuy nhiên, chú ý chỉ dùng hàm đó với text ở ngoài thẻ
<code></code>
thôi nhé, nội dung bên trong thẻ code thì không được dùng hàm escape.Mà anh tưởng cái này thì thư viện render markdown nó phải hỗ trợ chứ nhỉ Em thử xem lại document của nó xem
Dạ, e hiểu vấn đề đó ạ, nhưng Viblo lại làm được ạ, vẫn cho hiển thị nội dung HTML, script nằm trong
example
và vẫn ngăn chặn được XSS...E vẫn chưa có hướng giải quyết cụ thể ở đây ạ...
@huukimit Việc hiển thị không là vấn đề a ạ, nhưng cái có vấn đề ở đây là:
Và khi em copy nguyên một cái html nào đó, paste vào markdown editor rồi nhấn đăng bài viết thì nguyên bài đăng không hiện nội dung của bài viết mà là Render thành một trang con trong bài viết dựa trên các mã html được viết trong đó ạ..
tks a