Câu hỏi phỏng vấn iOS Developer

64 Các câu hỏi phỏng vấn iOS Developer được chia sẻ bởi các ứng viên

IOS Developer là người xây dựng, phát triển các ứng dụng cho các thiết bị di động và tương thích với hệ điều hành iOS. Với sự lớn mạnh của Apple hiện nay, nhu cầu tuyển dụng iOS Developer trở nên lớn hơn bao giờ hết. Để chuẩn bị cho một buổi phỏng vấn vị trí này, dưới đây là những câu hỏi phỏng vấn iOS Developer bạn tham khảo nhé. 

Câu hỏi phỏng vấn IOS Developer về chuyên môn

Mô tả vòng đời View Controller trong ứng dụng iOS

View Controller có nhiệm vụ tương tác với View và hệ thống, quản lý thay đổi từ View và thực hiện các cập nhật lên View. Vòng đời của View Controller bao gồm:

  • Load View: gọi khi khởi tạo 1 view controller
  • ViewDidLoad: Sau khi view controller được tạo và nạp vào bộ nhớ xong thì hàm này sẽ được gọi. Trong hàm này sẽ xử lý việc chuẩn bị data hay khởi tạo các giá trị trên màn hình
  • ViewDidAppear: được gọi khi view đã được hiển thị lên màn hình
  • ViewDidDisappear: gọi khi view được ẩn khỏi màn hình, chuyển sang màn hình khác

Các trạng thái thông thường của một ứng dụng iOS

Thông thường có 5 trạng thái mà một ứng dụng iOS có thể có:

  • Not Running: ứng dụng đang hoàn toàn không được chạy
  • Inactive: ứng dụng đang ở trạng thái mở nhưng có 1 ứng dụng khác đang chạy ưu tiên active bên trên như cuộc gọi, tin nhắn, ….
  • Active: ứng dụng đang mở hoạt động và người dùng có thể tương tác
  • Background: ứng dụng đang ở trạng thái chạy nền, thông thường là ứng dụng được mở từ trước đó, người dùng thoát ra sử dụng ứng dụng khác nhưng không tắt ứng dụng đi
  • Suspended: ứng dụng khi ở trạng thái nền một thời gian nếu bộ nhớ của thiết bị không đủ để duy trì việc chạy nền thì sẽ không thể xử lý thêm tác vụ nào từ ứng dụng và đưa nó về trạng thái treo

Swift là gì? Ưu điểm của nó với Objective-C

Swift là một ngôn ngữ lập trình hướng đối tượng được Apple phát triển cho iOS, macOS và một số nền tảng khác. Swift được phát hành từ năm 2014, nó có nhiều tính năng ưu việt hơn các ngôn ngữ khác nhờ việc chọn ra những ý tưởng nổi bật của các ngôn ngữ đã phát triển trước đó. So với Objective-C (ngôn ngữ ban đầu được Apple sử dụng cho lập trình iOS) thì:

  • Code trong Swift ngắn gọn và dễ đọc, dễ viết, dễ bảo trì hơn
  • Rút ngắn được thời gian phát triển
  • Có khả năng tương thích với Objective-C
  • Có các tính năng hiện đại hơn như kiểm tra kiểu dữ liệu, quản lý bộ nhớ tự động
  • Hỗ trợ lập trình hàm

Nêu sự khác biệt giữa 2 biến Strong và Weak?

Các biến là yếu tố không thể thiếu trong hoạt động lập trình các ứng dụng. Vì vậy câu hỏi so sánh và phân biệt các biến cũng sẽ thường bắt gặp trong quá trình phỏng vấn vị trí iOS developer.

Biến Strong khi trỏ đến đối tượng sẽ sở hữu đối tượng đó và làm retainCount của nó tăng thêm 1. Còn biến Weak khi trỏ đến đối tượng sẽ tham chiếu giá trị đó và không làm tăng retainCount của nó. Khi giá trị retainCount về 0 thì đối tượng sẽ bị hủy và biến Weak được reset về giá trị null.

Vậy biến Weak sử dụng trong trường hợp nào?

Sau khi bạn đã phân biệt 2 biến Strong và Weak, rất có thể nhà tuyển dụng sẽ muốn đào sâu về những trường hợp ứng dụng 2 biến này. Qua đó họ sẽ xác định được iOS developer hiểu biết tường tận hay chỉ tìm hiểu sơ bộ về những vấn đề này.

Có 2 trường hợp lập trình viên nên sử dụng biến Weak là: 2 class có các đối tượng reference đến nhau và 2 class có quan hệ cha con. Lúc này, lập trình viên sẽ dùng biến weak với 1 class để tránh leak memory.

So sánh các collection Array, Set và Dictionary trong Swift

Collection là những kiểu dữ liệu tập hợp, trong Swift có 3 dạng chính là Arrays, Sets và Dictionary. 

  • Array (Mảng) : sử dụng để lưu trữ dữ liệu cùng kiểu và sắp xếp có thứ tự. Do cần có thứ tự nên các phần tử trong mảng có thể trùng lặp nhau.
  • Set (Bộ): cũng được sử dụng để lưu trữ các dữ liệu có cùng kiểu nhưng không quan tâm đến thứ tự sắp xếp trong đó. Khác với Array, các phần tử trong Set không được phép trùng lặp
  • Dictionary (Từ điển): lưu trữ dữ liệu bằng cặp key – value, các key bắt buộc không trùng lặp nhau, tuy nhiên value thì có thể trùng lặp.

Các bước để phát hành ứng dụng iOS trên AppStore

Bước đầu tiên, bạn cần đăng ký chương trình nhà phát triển của Apple (Apple Developer Program) để có thể phát hành ứng dụng lên chợ Appstore

Sau khi có tài khoản, bạn cần tạo các file và thiết lập cho tài khoản và ứng dụng của mình, bao gồm:

  • AppID: xác minh ứng dụng của bạn, nó là duy nhất
  • Các thông tin cơ bản về ứng dụng: từ tên, mô tả, các ảnh chụp màn hình, các thông tin để phía Apple kiểm duyệt, … bạn cần cung cấp để mọi người biết đến ứng dụng của bạn
  • Certificate: chứng chỉ được cấp bởi Apple đảm bảo việc ứng dụng của bạn được chấp nhận bởi các thiết bị sử dụng iOS
  • Provisioning: như một hồ sơ đăng ký giúp ứng dụng của bạn xác định danh tính, bảo mật thông tin và giúp bạn có thể build được ứng dụng lên Appstore

ARC là gì?

Với câu hỏi này, nhà tuyển dụng muốn kiểm tra xem lập trình viên IOS có thực sự am hiểu về phương pháp lập trình trong iOS không. Bạn chỉ cần trả lời ngắn gọn và chính xác về khái niệm này là được.

ARC là từ viết tắt của Automatic Reference Counting, nghĩa là “Tự động đếm số lượng tham chiếu”. Đây là một hệ thống quản lý tự động được tích hợp sẵn trong ngôn ngữ lập trình Swift. Nó có vai trò tự động chèn thêm các đoạn code được chỉ định vào đối tượng và đưa ra quyết định khi nào đối tượng không cần thiết sử dụng các đoạn code nữa.

Bạn đã làm việc với các framework iOS nào?

Tôi đã làm việc với các framework như UIKit, Core Data, Core Animation và Alamofire. Tôi cũng có kiến thức về SwiftUI và Combine và đã sử dụng chúng trong các dự án nhỏ.

Kinh nghiệm “ đậu" phỏng vấn vị trí IOS Developer

Kiến thức là phần quan trọng trong buổi phỏng vấn mà bạn cần chuẩn bị kỹ càng, tuy nhiên đó chưa phải là tất cả để bạn vượt qua buổi phỏng vấn với số điểm tuyệt đối. Trong buổi phỏng vấn đôi khi còn phụ thuộc vào nhiều yếu tố khác nữa, hãy xem bạn cần chú ý những điều gì để có sự hoàn hảo trong buổi phỏng vấn sắp tới. 

Sự tự tin

Có một câu nói rất hay và nổi tiếng về sự tự tin là : “Tự tin là điều kiện đầu tiên để làm được những điều lớn lao". Câu nói này quả thực không sai, chỉ cần bạn có sự tự tin với những gì bạn có, với những gì bạn làm chẳng có khó khăn nào cản trở được ý chí của bạn cả. Việc chuẩn bị tâm lý trước phỏng vấn cũng giúp bạn tự tin nhiều hơn, điều này rất có lợi đến việc trả lời câu hỏi.

Lựa chọn trang phục phù hợp

Một trang phục đẹp sẽ gây được chú ý của  hà tuyển dụng, có khi còn giúp bạn lọt top những ứng viên ấn tượng trong mắt nhà tuyển dụng ý chứ. Còn gì tuyệt vời hơn nếu như bạn kết hợp những bộ trang phục với vị trí mà mình ứng tuyển. Với một chiếc áo sơ mi voi9ứ một chiếc quần jean cá tính mang phong cách mạnh mẽ rất phù hợp với một lập trình viên.

Chú ý cách giao tiếp

Giao tiếp thể hiện sự tôn trọng của bạn với nhà tuyển dụng, vậy nên hãy cố gắng đưa ra những câu trả lời cho đúng mực nhất. Hãy thể hiện mình là một người trưởng thành để nâng cao sự chuyên nghiệp của bản thân hơn

Câu hỏi phỏng vấn iOS Developer & Cách trả lời

Dưới đây là 3 câu hỏi phỏng vấn iOS Developer hàng đầu và cách trả lời chúng:

Câu hỏi #1: Lập trình iOS là gì? Ngôn ngữ, công cụ sử dụng

Lập trình iOS là việc xây dựng và phát triển các ứng dụng có thể chạy trên các thiết bị sử dụng hệ điều hành iOS, cụ thể là iPhone, iPad, iPod. Apple cung cấp IDE Xcode và iOS SDK cho việc lập trình iOS bằng ngôn ngữ Objective-C hay Swift; ngoài ra chúng ta cũng có thể phát triển ứng dụng iOS bằng các nền tảng cross-platform khác như React Native hay Flutter. iOS SDK được Apple phát hành miễn phí cho lập trình viên, mặc dù vậy nó chỉ hỗ trợ chạy trên nền MacOS cũng thuộc hệ sinh thái Apple.

Để ứng dụng iOS đến được với người dùng, các nhà phát hành cần đăng ký tài khoản Apple Developer và publish nó lên kho chợ ứng dụng AppStore. Tính đến nay có khoảng 2 triệu ứng dụng được phát hành trên nền tảng chợ ứng dụng này.

Câu hỏi #2: Swift là gì? Ưu điểm của nó với Objective-C

Swift là một ngôn ngữ lập trình hướng đối tượng được Apple phát triển cho iOS, macOS và một số nền tảng khác. Swift được phát hành từ năm 2014, nó có nhiều tính năng ưu việt hơn các ngôn ngữ khác nhờ việc chọn ra những ý tưởng nổi bật của các ngôn ngữ đã phát triển trước đó. So với Objective-C (ngôn ngữ ban đầu được Apple sử dụng cho lập trình iOS) thì:

  • Code trong Swift ngắn gọn và dễ đọc, dễ viết, dễ bảo trì hơn
  • Rút ngắn được thời gian phát triển
  • Có khả năng tương thích với Objective-C
  • Có các tính năng hiện đại hơn như kiểm tra kiểu dữ liệu, quản lý bộ nhớ tự động
  • Hỗ trợ lập trình hàm

Câu hỏi #3: Các bước để phát hành ứng dụng iOS trên AppStore

Bước đầu tiên, bạn cần đăng ký chương trình nhà phát triển của Apple (Apple Developer Program) để có thể phát hành ứng dụng lên chợ Appstore

Sau khi có tài khoản, bạn cần tạo các file và thiết lập cho tài khoản và ứng dụng của mình, bao gồm:

  • AppID: xác minh ứng dụng của bạn, nó là duy nhất
  • Các thông tin cơ bản về ứng dụng: từ tên, mô tả, các ảnh chụp màn hình, các thông tin để phía Apple kiểm duyệt, … bạn cần cung cấp để mọi người biết đến ứng dụng của bạn
  • Certificate: chứng chỉ được cấp bởi Apple đảm bảo việc ứng dụng của bạn được chấp nhận bởi các thiết bị sử dụng iOS
  • Provisioning: như một hồ sơ đăng ký giúp ứng dụng của bạn xác định danh tính, bảo mật thông tin và giúp bạn có thể build được ứng dụng lên Appstore

Sau khi chuẩn bị hết các thứ ở trên, chúng ta tiến hành build và phát hành ứng dụng thông qua AppStore. Apple cũng cung cấp sẵn các tính năng giúp nhà phát hành kiểm thử ứng dụng nội bộ (trên một nhóm các testers được chỉ định) hoặc phát hành các bản dùng thử alpha, beta,…

Câu hỏi phỏng vấn

iOS Developer được hỏi... 05/06/2023

NSNotificationCenter là gì và nó hoạt động như thế nào?

1 câu trả lời

NSNotificationCenter là một cơ chế nghe-gọi mà Apple phát triển từ Observer Pattern trong thư viện Cocoa . Ý tưởng ở đây là Bên A từ một thao tác sẽ gửi thông điệp tới bên B qua một protocol, từ đố dữ liệu sẽ được truyền qua thông điệp tới bên B và bên B sẽ xử lý. 

iOS Developer được hỏi... 06/06/2023

Sự khác biệt giữa 'let' và 'var' trong Swift là gì?

1 câu trả lời

  • Đối với các kiểu cơ bản, từ khóa let định nghĩa một hằng số:
    let theAnswer = 42
    Giá trị của một hằng số không cần biết tại thời điểm biên dịch, nhưng bạn phải chỉ định giá trị chính xác một lần.
  • var định nghĩa một biến bình thường.
    Cả varlet đều là tham chiếu/con trỏ, do đó let là tham chiếu/con trỏ hằng số. Sử dụng các kiểu cơ bản không thực sự cho thấy let khác với const như thế nào. Sự khác biệt xuất hiện khi sử dụng nó với các instance của lớp (kiểu tham chiếu):

class CTest
{
var str : String = ""
}

let letTest = CTest()
letTest.str = "test" // OK

letTest.str = "another test" // Still OK

//letTest = CTest() // Error

var varTest1 = CTest()
var varTest2 = CTest()
var varTest3 = CTest()

varTest1.str = "var 1"
varTest2.str = "var 2"
varTest3 = varTest1
varTest1.str = "var 3"

varTest3.str // "var 3"

iOS Developer được hỏi... 05/06/2023

Sự khác biệt giữa Upcast và Downcast trong Swift là gì?

1 câu trả lời

Upcast, đi từ lớp dẫn xuất sang lớp cơ sở, có thể được kiểm tra tại thời điểm biên dịch và sẽ không bao giờ bị lỗi.

Tuy nhiên, quá trình Downcast có thể không thành công vì bạn không phải lúc nào cũng có thể chắc chắn về lớp chỉ định. Nếu bạn có UIView, có thể đó là UITableView hoặc có thể là UIButton.

  • downcasts phải là tùy chọn với as? hoặc
  • "forced failable" với as! khi chắc chắn về kiểu
iOS Developer được hỏi... 05/06/2023

Serial Queue là gì?

1 câu trả lời

Serial Queue cho phép chúng ta thực hiện chỉ một tác vụ tại một thời điểm, bất kể cách thực thi, tức là Đồng bộ hay Bất đồng bộ. Tóm lại, mã được thực thi bởi Serial DispatchQueue không song song và phải đợi tác vụ đầu tiên hoàn thành. Cách thực hiện này còn được gọi là First In, First Out (FIFO).

Tất cả các hàng đợi cần phải đợi hoàn thành hàng đợi trước đó. Theo mặc định, DispatchQueue là một hàng đợi nối tiếp.

let queue = DispatchQueue(label: "com.swiftpal.dispatch.serial")

 

queue.async() {

Thread.sleep(forTimeInterval: 3) // Wait for 3 seconds

print("Task 1 Done")

}

 

queue.async() {

Thread.sleep(forTimeInterval: 1) // Wait for 1 second.

print("Task 2 Done")

}

 

/* Output:

Task 1 Done

Task 2 Done

*/

iOS Developer được hỏi... 05/06/2023

Sự khác biệt giữa '==' và '===' là gì?

1 câu trả lời

  • Toán tử == kiểm tra xem các giá trị có giống nhau hay không, so sánh kiểu giá trị. "equal to"
  • Toán tử === kiểm tra xem các tham chiếu trỏ đến cùng một instance (cả hai đều trỏ đến cùng một địa chỉ bộ nhớ), so sánh kiểu tham chiếu. "identical to"
iOS Developer được hỏi... 05/06/2023

Các Extension được sử dụng để làm gì trong Swift?

1 câu trả lời

Các Extension thêm chức năng mới vào class, structure, enumeration hoặc protocol đã có. Điều này bao gồm khả năng mở rộng các kiểu mà bạn không có quyền truy cập vào mã nguồn ban đầu. Các Extension tương tự như các category trong Objective-C.

Các Extension trong Swift có thể:

  • Thêm thuộc tính phiên bản được tính toán và thuộc tính kiểu máy tính.
  • Định nghĩa phương thức thể hiện và phương thức kiểu.
  • Cung cấp bộ khởi tạo mới.
  • Định nghĩa chỉ số phụ.
  • Định nghĩa và sử dụng các kiểu lồng nhau mới.
  • Làm cho một kiểu đã có phù hợp với một protocol.
iOS Developer được hỏi... 05/06/2023

Type Inference (Kiểu suy luận) là gì?

1 câu trả lời

Khai báo một cách nhanh chóng trong Swift. Bạn không cần viết đầy đủ kiểu dữ liệu khi khai báo biến hay hằng số, Swift có thể tự suy luận dựa theo giá trị được khởi tạo đầu tiên:

var age = 40 // Int
var age : Int = 40

iOS Developer được hỏi... 05/06/2023

Protocols là gì?

1 câu trả lời

Protocols (giao thức) là một bản thiết kế bao gồm các phương thức, thuộc tính và các yêu cầu khác phù hợp, với một nhiệm vụ vụ thể, và nó có thể được chấp nhận bởi một class, struct hoặc enumeration.

  • Protocols không bao gồm việc thực thi.
  • Loại mà đang kế thừa protocols, cần thực thi tất cả các method được định nghĩa trong protocols. Và hành động này được gọi là conforming protocol

Ví dụ:

protocol Vehicle {
func accelerate()
func stop()
}
class Unicycle : Vehicle {
var peddling = false
func accelerate(){
peddling = true
}
func stop() {
peddling = false
}
}

iOS Developer được hỏi... 06/06/2023

Tuples là gì?

1 câu trả lời

Đôi khi dữ liệu đi theo cặp hoặc bộ ba. Ví dụ về điều này là một cặp tọa độ (x, y) trên lưới 2D. Tương tự, một tập hợp các tọa độ trên lưới 3D bao gồm giá trị x, giá trị y và giá trị z. Trong Swift, bạn có thể biểu diễn những dữ liệu liên quan như vậy một cách rất đơn giản thông qua việc sử dụng một bộ tuple.

let coordinates: (Int, Int) = (2, 3)

iOS Developer được hỏi... 05/06/2023

Điều gì về tính đột biến (Mutability) trong Swift?

1 câu trả lời

Hằng số let là không đổi và biến var thay đổi.

iOS Developer được hỏi... 06/06/2023

Supscripts là gì?

1 câu trả lời

Với các subcripts, bạn có thể nhanh chóng truy cập các phần tử con của một tập hợp (collections - bộ sưu tập).

Một subscript bao gồm:

  • Tên của một collections, ví dụ scores
  • Hai dấu ngoặc vuông [ và ]
  • Một key hoặc index bên trong dấu ngoặc

Theo mặc định, bạn có thể sử dụng chỉ số con với arrays, dictionarys, collections, lists, sequences. Bạn cũng có thể triển khai của riêng bạn như ví dụ sau:

subscript(parameterList) -> ReturnType {
get {
// trả lại someValue của ReturnType
}
set(newValue) {
// đặt lại someValue của ReturnType thành newValue
}

iOS Developer được hỏi... 05/06/2023

Optional là gì?

1 câu trả lời

Optional là giải pháp của Swift cho vấn đề đại diện cho cả giá trị và sự vắng mặt của giá trị. Một optional được phép giữ giá trị hoặc nil.

iOS Developer được hỏi... 06/06/2023

Unwrap Optional bằng những cách nào?

1 câu trả lời

Có thể unwrap optional bằng những cách sau:

  • Bằng Optional Binding
  • Bằng Force Unwrapping
  • Bằng Guard Statement
  • Bằng Nil Coalescing

Optional Binding (If let)

Cách đơn giản nhất để unwrap một optional:

var authorName : String? = "Mohd Yasir"
if let authorName == authorName {
print("Author name is \(authorName)")
else{
print("No Author Name")
}

Force Unwrapping

Để ép buộc unwrap, sử dụng "!"

var authorName : String? = "Mohd Yasir"
print("Auhor name : \(authorName!)")

Guard Statement

Đôi khi bạn muốn kiểm tra một điều kiện và chỉ tiếp tục thực thi một hàm nếu điều kiện là đúng, chẳng hạn như khi bạn sử dụng optionals. Hãy tưởng tượng một hàm lấy một số dữ liệu từ internet. Quá trình tìm nạp đó có thể không thành công nếu mạng gặp sự cố. Cách thông thường để đóng gói hành vi này là sử dụng một optional, có giá trị nếu tìm nạp thành công và nil nếu không thành công.

Swift có một tính năng hữu ích và mạnh mẽ để trợ giúp trong những trường hợp như thế này - câu lệnh guard let:

func testingGuard( _ name : String?){
guard let unrappedname = name else {
print("You dont entered any name")
return
}
print("Hello , \(unrappedname)")
}

Nil Coalescing

let name = String? = nil
let unwrappedName = name5 ?? "Unkonwn"

iOS Developer được hỏi... 06/06/2023

Loại cấp phát bộ nhớ nào diễn ra trong Swift?

1 câu trả lời

Trong Stack và Heap

Khi bạn tạo một loại tham chiếu chẳng hạn như class, hệ thống sẽ lưu trữ cá thể thực tế trong một vùng bộ nhớ được gọi là heap.

Các thể hiện của một kiểu giá trị chẳng hạn như một struct nằm trong một vùng bộ nhớ được gọi là stack.

iOS Developer được hỏi... 05/06/2023

Sự khác biệt giữa ngăn xếp và bộ nhớ heap là gì?

1 câu trả lời

Hệ thống sử dụng stack để lưu trữ bất kỳ thứ gì trên chuỗi thực thi ngay lập tức; nó được quản lý chặt chẽ và tối ưu hóa bởi CPU. Khi một hàm tạo một biến, stack sẽ lưu trữ biến đó và sau đó hủy nó khi hàm thoát. Vì stack được tổ chức rất chặt chẽ, nó rất hiệu quả và do đó khá nhanh.

Hệ thống sử dụng heap để lưu trữ các phiên bản của các loại tham chiếu. Heap thường là một nhóm bộ nhớ lớn mà từ đó hệ thống có thể yêu cầu và cấp phát động các khối bộ nhớ. Chu kỳ thời gian của nó khá là linh hoạt và năng động. Heap không tự động hủy dữ liệu của nó giống như stack; công việc bổ sung được yêu cầu để làm điều đó. Điều này làm cho quá trình tạo và xóa dữ liệu trên heap chậm hơn so với trên ngăn xếp.

iOS Developer được hỏi... 06/06/2023

Khái niệm của Optional trong Swift ?

1 câu trả lời

Optional là một khái niệm tương đối mới mẻ trong ngôn ngữ lập trình Swift. Bằng việc sử dụng Optional, Swift được Apple khẳng định rằng nó là một ngôn ngữ có sự  “an toàn” hơn so với Objective-C.

Optional có 2 loại đó là "?"!"

iOS Developer được hỏi... 05/06/2023

Trong Swift thì Switch có những đặc tính gì?

1 câu trả lời

Switch là một câu hỏi phỏng vấn Swift đơn giản, nó có những đặc tính tiêu biểu như:

  • Hỗ đối với tất cả mọi loại dữ liệu.
  • Trong trường hợp bắt đầu match 1 case, chương trình sẽ tiến hành xử lý case đó và dừng kiểm tra các case còn lại. Vì vậy không cần thêm 'break' vào mỗi đoạn mã.
  • Lệnh switch cần được khai báo đầy đủ toàn bộ các giá trị có thể có.
  • Không có fallthrough nên break không hoàn toàn bắt buộc.
iOS Developer được hỏi... 06/06/2023

Trong Swift có những loại Integer nào?

1 câu trả lời

Trong Swift có những loại Integer unsignedsigned dưới dạng 8 bit, 16 bit, 32 bit và 64 bit.

iOS Developer được hỏi... 05/06/2023

Phân biệt Atomic và Nonatomic

1 câu trả lời

Nếu bạn có hơn một thread nó có thể cho setter và getter gọi cùng một lúc. Khi đó  setter và getter có thể bị gián đoạn bởi các hoạt động khác có thể khiến cho dữ liệu bị hỏng.

Tuy nhiên Atomic sẽ ngăn điều này xảy ra, các hoạt động vẫn sẽ bình thường và làm việc với giá trị đầy đủ.

Tuy nhiên đây chỉ là một khía cạnh của thread-safe-using và thuộc tính không đảm bảo là mã là thread-safe.

iOS Developer được hỏi... 05/06/2023

Category là gì? Nêu cách sử dụng?

1 câu trả lời

Khi muốn thêm một phương thức trong class mà bạn không muốn mở rộng nó thì bạn sẽ sử dụng Category. Đây là cách để phân chia một lớp khởi tạo ra nhiều file khác nhau. Điều này sẽ giảm bớt được gánh nặng khi phải duy trì cơ sở code lớn bằng module hóa thành một lớp. Nó sẽ giúp bạn tránh việc viết tập tin với hơn 10000 dòng code mà không dùng được ứng dụng.

Đang xem 41 - 60 trong 64 câu hỏi phỏng vấn