iOS - هفت سوال تشریحی!


  • محدودیت حجم فایل ارسالی: ۴ مگابایت
  • این سوال داوری خودکار ندارد!
  • پاسخ‌های خود را بصورت Zip ارسال کنید تا پس از پایان مسابقه توسط طراحان نمره‌دهی شود.

به ۷ سوال زیر پاسخ تشریحی دهید (و در صورت لزوم برنامه‌هایی بنویسید و آن‌ها را نیز در فایل Zip ارسالی قرار دهید.)

۱. باگ موجود در کد زیر را مشخص نمایید و پیشنهاد دهید چگونه می توان آن را رفع کرد؟

class MyCustomController: UIViewController {
    var alertLabel: UILabel!

    override func viewDidLoad() {
        alertLabel = UILabel()
        alertLabel.text = "Please wait..."
        view.addSubview(alertLabel)

        alertLabel.snp.makeConstraints { make in
            make.edges.equalToSuperview()
        }

        DispatchQueue.global().async {
            sleep(10)
            self.alertLabel.text = "Waiting over"
        }
    }
}
Plain text

۲. تفاوت استفاده از delegate و notification در چیست؟

۳. در قطعه کد زیر نوع و مقدار result1 و resut2 چیست؟ توضیح دهید چرا.

struct Month {
    let name: String
    let days: Int
}

let monthOfYaer = [
    Month(name: "Farvardin", days: 31),
    Month(name: "Ordibehesht", days: 31),
    Month(name: "Khordad", days: 31),
    Month(name: "Tir", days: 31),
    Month(name: "Mordad", days: 31),
    Month(name: "Shahrivar", days: 31),
    Month(name: "Mehr", days: 30),
    Month(name: "Aban", days: 30),
    Month(name: "Azar", days: 30),
    Month(name: "Dey", days: 30),
    Month(name: "Bahman", days: 30),
    Month(name: "Esfand", days: 29)
]

let result1 = monthOfYaer.map { $0.name }
let result2 = monthOfYaer.reduce(0) { $0 + $1.days }
Plain text

۴. قطعه کد زیر را در نظر بگیرید. باگ موجود چیست و چطور بر مموری تاثیر می گذارد. چطور می توان آن را رفع کرد؟

class Master {
    lazy var detail: Detail = Detail(master: self)

    init() {
        print("Master init")
    }

    deinit {
        print("Master deinit")
    }
}

class Detail {
    var master: Master

    init(master: Master) {
        print("Detail init")
        self.master = master
    }

    deinit {
        print("Detail deinit")
    }
}

func createMaster() {
    var master: Master = Master()
    var detail = master.detail
}

createMaster()
Plain text

۵. توضیح دهید که MVC چیست؟ یک جایگزین برای آن نام ببرید.

۶. در سازنده کلاس UITableViewCell ، reuseIdentifier چه کاربردی دارد؟

init(style: UITableViewCell.CellStyle, reuseIdentifier: String?)
Plain text

۷. ترجیح شما هنگام نوشتن UI چیست؟ فایلهای Xib*، *Storyboards یا ساخت ویو با کد؟