Sobes.tech
Intern

Забони барномасозии iOS навъст?

sobes.tech AI

Ҷавоб аз AI

Бале, ин дуруст аст. Swift ва Objective-C (забонҳои асосии таҳия барои iOS/macOS) забонҳои бо намуди қавӣ мебошанд.

Дар забонҳои бо намуди қавӣ, намудҳои тағйирёбандаҳо ё дар вақти компилятсия (намуди статикӣ, мисли Swift), ё дар вақти иҷро (намуди динамикӣ, дар Objective-C) маълуманд. Ин кӯмак мекунад, ки хатоҳои зиёде, ки бо номувофиқии намудҳо алоқаманданд, пеш аз оғози барнома ошкор шаванд.

Афзалиятҳои намуди:

  • Бехатарӣ: Аз хатоҳои бо намудҳои номувофиқ пешгирӣ мекунад.
  • Иҷроӣ: Компилятор метавонад кодро оптимизатсия кунад, донистани намудҳои додаҳо.
  • Фаҳмондадиҳӣ: Ифодаи равшан аз намудҳо фаҳмиши коди беҳтар мекунад.
  • Дастгирии воситаҳо: IDEҳо беҳтар автоматӣ пур кардан ва рефакторингро пешниҳод мекунанд.

Swift забони бо намуди статикӣ аст, ки маънои онро дорад, ки санҷиши намудҳо дар вақти компилятсия сурат мегирад. Objective-C дорои элементҳои ҳам намуди статикӣ ва ҳам динамикӣ мебошад (масалан, пайвастагии дер).

Масалан, намунаи намуди статикӣ дар Swift:

// swift
let number: Int = 10 // Ифодаи равшан аз намуди Int
// let text: String = number // Хатои компилятсия: Наметавон арзиши намуд 'Int'-ро ба 'String' таъин кард

Масалан, намунаи намуди динамикӣ (полиморфизм) дар Objective-C:

// objective-c
id object = [[NSString alloc] initWithFormat:@"Hello"];
// object метавонад ҳар объектро дар бар гирад. Намуд дар вақти иҷро ҳангоми фиристодани паём санҷида мешавад.
NSString *stringObject = object; // Casting, аммо намуди асосӣ id аст, ки чандир аст