පරමාර්ථ C #pragma mark
හි, සංකේත සංචාලනයේ මගේ කේතයේ කොටස් සලකුණු කිරීමට මට භාවිතා කළ හැකිය . මෙය C preprocessor විධානයක් බැවින් එය ස්විෆ්ට් හි නොමැත. ස්විෆ්ට් හි මේ සඳහා ස්ථාවරයක් තිබේද, නැතහොත් මට කැත අදහස් දැක්විය යුතුද?
පරමාර්ථ C #pragma mark
හි, සංකේත සංචාලනයේ මගේ කේතයේ කොටස් සලකුණු කිරීමට මට භාවිතා කළ හැකිය . මෙය C preprocessor විධානයක් බැවින් එය ස්විෆ්ට් හි නොමැත. ස්විෆ්ට් හි මේ සඳහා ස්ථාවරයක් තිබේද, නැතහොත් මට කැත අදහස් දැක්විය යුතුද?
Answers:
ඔයාට පාවිච්චි කරන්න පුළුවන් // MARK:
පංති දීර් ensions කිරීම් ලිබරල් ලෙස භාවිතා කිරීම කෙසේ හෝ වඩා හොඳ භාවිතයක් විය හැකි බවට ද සාකච්ඡා වී තිබේ. දිගු වලට ප්රොටෝකෝල ක්රියාත්මක කළ හැකි බැවින්, ඔබට උදා: ඔබේ මේස දර්ශන නියෝජිත ක්රම සියල්ලම දිගුවකට දමා ඔබේ කේතය හැකියාවට වඩා අර්ථකථන මට්ටමින් කාණ්ඩගත #pragma mark
කළ හැකිය.
// MARK:
, // TODO:
හා // FIXME
ස්විෆ්ට් ප්රභවය සහ පැනීම තීරුව ලැයිස්තු ඒවා. (BTW, එය මේ වන විටත් (එය විවෘත) සී ප්රභවය කළා - #pragma mark
නොවන එකම ක්රමයකි.) ඔව්, ඔබ තවමත් එකතු කළ හැකි -
, ඔබගේ MARK
මෙනුවේ ෙවන් ඉදිරිපත් කිරීමය.
MARK
දැන් වැඩ කිරීමේදී පවා , යම් ආකාරයක අර්ථකථන සම්බන්ධ කේත (විශේෂයෙන් ප්රොටෝකෝලය ක්රියාත්මක කිරීම) කාණ්ඩ කිරීම සඳහා දිගු භාවිතා කිරීම තවමත් ප්රයෝජනවත් වේ. IMHO එය ක්රියාත්මක කරන ක්රමවේදයන්ට යාබදව ඔබේ ප්රොටෝකෝලය අනුකූලතාව ප්රකාශ කිරීම වඩා හොඳය, ගොනුවේ ඉහළින් ඇති ප්රොටෝකෝල ප්රකාශ 5 ක් සහ ඊට අදාළ ක්රම 50 ක් අහඹු ලෙස පහළින් කොතැනක හෝ විසිරී ඇත.
#pragma mark
. // MARK: -
යනු බෙදුම්කරුවෙකු පමණක් වන අතර, // MARK: - stuff
ඔබට බෙදුම්කරුවෙකු සහ ශීර්ෂයක් // MARK: - stuff -
ලබා දෙන අතර ඔබට විවරකයක්, ශීර්ෂයක් සහ තවත් බෙදුම්කරුවෙකු එක් විවරණ රේඛාවකින් ලබා දේ.
Xcode 5 දක්වා පෙර සැකසුම් විධානය #pragma mark
පැවතුනි.
Xcode 6 සිට, ඔබ භාවිතා කළ යුතුය // MARK:
මෙම පෙර සැකසුම් විශේෂාංග මඟින් ප්රභව කේත සංස්කාරකයේ ක්රියාකාරී පතන කොටුවට යම් ව්යුහයක් ගෙන ඒමට ඉඩ ලබා දේ.
උදාහරණ කිහිපයක්:
// MARK:
-> තිරස් බෙදුම්කරුට පෙර වනු ඇත
// MARK: your text goes here
-> පතන ලැයිස්තුවේ තද අකුරින් 'ඔබේ පෙළ මෙතැනට යයි'
// MARK: - your text goes here
-> පතන ලැයිස්තුවේ තද අකුරින් 'ඔබේ පෙළ මෙතැනට යයි', ඊට පෙර තිරස් බෙදුම්කරු
යාවත්කාලීන කිරීම: එකතු කළ තිර රුවක් නිසා සමහර අයට තවමත් මේ සමඟ ගැටළු ඇති බව පෙනේ:
// MARK: - text
මා සඳහා භාවිතා කරන බෙදුම්කරුවන් නොමැති අතර පතන ලැයිස්තුවෙන් දැක්වෙන්නේ MARK: හුදෙක් පෙළ වෙනුවට පෙළයි .
දිගු ලකුණු එදිරිව ප්රාග්මා ලකුණු භාවිතා කිරීමට උනන්දුවක් දක්වන අය සඳහා (පළමු විවරණයේ සඳහන් පරිදි), ස්විෆ්ට් ඉංජිනේරුවෙකුගෙන් එය ක්රියාත්මක කරන්නේ කෙසේද යන්න මෙන්න:
import UIKit
class SwiftTableViewController: UITableViewController {
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
extension SwiftTableViewController {
override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
return 1
}
override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
return 5
}
override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
let cell = tableView?.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell;
cell.textLabel.text = "Hello World"
return cell
}
}
එය අනිවාර්යයෙන්ම හොඳම පුහුණුව නොවේ, නමුත් ඔබ කැමති නම් ඔබ එය කරන්නේ මෙයයි.
typealias
. උදාහරණයක් ලෙස typealias DataSource = SwiftTableViewController
. එවිටextension Datasource {}
UITableViewController
යනු ප්රොටෝකෝලයක් නොවේ, එය පන්තියකි. ඔබ බොහෝ විට අදහස් කළ UITableViewControllerDataSource
නමුත් මෙය උදාහරණයේ භාවිතා වන රටාව නොවේ.
extension
ප්රොටෝකෝලය සමඟ ශීර්ෂකය නොලැබුනේ ඇයි , වැනි extension SwiftTableViewController : UITableViewController
, ඔබ එම දිගුව පන්තියට එකතු කළේ ඇයි දැයි බැලීමට වඩා කියවිය හැකි වනු ඇත.
extension SwiftTableViewController : UITableViewDelegate { .. }
හාextension SwiftTableViewController : UITableViewDatasource { .. }
Pragma mark - [SOME TEXT HERE]
රේඛාව වෙන් කිරීමෙන් ශ්රිත කිහිපයක් එකට කාණ්ඩ කිරීම සඳහා පරමාර්ථ-සී හි භාවිතා කරන ලදි .
දී ස්විෆ්ට් ඔබ මෙම භාවිතා කළ හැකි බවMARK, TODO OR FIXME
මම. ලකුණ : //MARK: viewDidLoad
මෙය viewDidLoad යටතේ කාණ්ඩ කර ඇති ශ්රිත සමඟ තිරස් රේඛාවක් නිර්මාණය කරයි (තිර රුව 1 හි පෙන්වා ඇත)
ii. ටෝඩෝ: //TODO: - viewDidLoad
මෙය TODO යටතේ කණ්ඩායම් ක්රියාකාරී වනු ඇත : - viewDidLoad කාණ්ඩය (තිර රුව 2 හි පෙන්වා ඇත)
iii. සවි කරන්න: //FIXME - viewDidLoad
මෙය FIXME යටතේ කණ්ඩායම් ක්රියාකාරී වනු ඇත : - viewDidLoad කාණ්ඩය (තිර රුව 3 හි පෙන්වා ඇත)
විස්තර සඳහා මෙම ඇපල් ප්රලේඛනය පරීක්ෂා කරන්න .
Xcode Jump Bar පිළිබඳ ඇපල් හි නිල ලේඛනය: පැනීමේ තීරුවට කේත විවරණ එකතු කරන්න
!!!:
හා ???:
සමහර විට ප්රදර්ශනය කළ නොහැක.
අරමුණ සී කේතය Xcode වගේ අදහස් හඳුනාගන්නා // MARK: - foo
වඩා ටිකක් එහා මෙහා ගෙන යා හැකි වන #pragma
. නමුත් මේවා ද ගත් බවක් නොපෙනේ (තවමත්?).
සංස්කරණය කරන්න: Xcode 6 බීටා 4 හි ස්ථාවර කර ඇත.
// MARK: -
එය මේ මොහොතේ ක්රියාත්මක නොවන බව මට තහවුරු කළ හැකිය .
// MARK:
එය වැඩ කරන බවක් නොපෙනේ. මම අවකාශය සමඟ සහ නැතිව, බඩවැල් සමඟ සහ නැතිව, සියලු තොප්පි සහ මිශ්ර (මාර්ක්) සමඟ උත්සාහ කර ඇත්තෙමි. උපක්රමයක් තිබේද? මට පෙරවදනක් හෝ යමක් සක්රිය කිරීමට අවශ්යද?
මම හිතන්නේ Extensions
ඒ වෙනුවට වඩා හොඳ ක්රමයක් #pragma mark
.
භාවිතා කිරීමට පෙර කේතය Extensions
:
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
...
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
...
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
...
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
...
}
}
භාවිතා කිරීමෙන් පසු කේතය Extensions
:
class ViewController: UIViewController {
...
}
extension ViewController: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
...
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
...
}
}
extension ViewController: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
...
}
}
extension
එක්ස්කෝඩ් හි බ්රෙඩ්ක්රම්බ් පාලනයේ පතන මෙනුව තුළ පමණක් කැපී පෙනෙන්නේ නැත.
// ARK:
මට Xcode 8
!!!
සහ ???
කාරක රීති Xcode 8.3.3 ... මත වැඩ කර නැත
අද උදෑසන ඩබ්ලිව්ඩබ්ලිව්ඩීසී හි ස්විෆ්ට් විද්යාගාරයේ ඇපල් ඉංජිනේරුවෙකු සමඟ තහවුරු කර ඇති පරිදි, මේ වන විට # ප්රාග්මා හෝ ඊට සමාන කිසිවක් නොමැති බව ඔවුන් විශ්වාස කරයි, ඔවුන් මෙය දෝෂයක් ලෙස සලකන අතර එය ඉක්මනින් පැමිණෙනු ඇත, එබැවින් මම බීටා 2 අනුමාන කරමි, මම බලාපොරොත්තු වෙමි.
කෙසේ හෝ වේවා, එය සිදුවෙමින් පවතී.
Xcode දැන් ඔබේ කේතය විවරණය කිරීමට // MARK:, // TODO: සහ // FIXME බිම් සලකුණු සඳහා සහය දක්වන අතර ඒවා පැනීමේ තීරුවේ ලැයිස්තුගත කරයි
භාවිත
// MARK: SectionName
හෝ
// MARK: - SectionName
මෙය ප්රග්මා සලකුණට ඉහළින් රේඛාවක් ලබා දෙන අතර එය වඩාත් කියවිය හැකිය.
පහසුව සඳහා එකතු කරන්න
// MARK: - <#label#>
ඔබේ කේත කොටස් වලට.
විකල්ප මාර්ගය -
මේ ආකාරයෙන් එය භාවිතා කරන්න
private typealias SectionName = ViewController
private extension SectionName {
// Your methods
}
මෙය ලකුණු එකතු කිරීම පමණක් නොව (ප්රාග්මා සලකුණ මෙන්) පමණක් නොව කේතය මනාව වෙන් කරයි.
//MARK
ආකෘතිය (ඉඩක්) සහ යෝජනා // MARK: (text)
( එක් හිස් අතර //
සහ මාක්, ඉඩ නැති අතර MARK
සහ :
, සහ එක් හිස් අතර :
හා මෙම කොටස නම)
//# MARK: - Spinner Class Methods
බෙදුම් රේඛාවක් ඇතුළු කිරීම සඳහා මහා බඩවැල සහ ඔබේ විස්තරය අතර රේඛාවක් එක් කරන්න. මෙය ඔබගේ කේතය ඊටත් වඩා සංවිධානය කිරීමට උපකාරී වේ. ඉහත කේතය සහ තිර රුව ඇතුළත් කර ඇති පේළියක් සමඟ මාක් විවරණය භාවිතා කරයි.
මෙය ක්රියාත්මක වන්නේ මාක් අදහස් දැක්වීම සමඟ පමණි.
ස්විෆ්ට් 4.2 / එක්ස් කෝඩ් 10 සම්පාදක විධානයන් ගැන ඔබ උනන්දු විය හැකිය
#warning("Some string to display")
සහ
#error("Some error to display")
ඔබට යමක් මග හැරීමට අවශ්ය නැති විට එය ප්රයෝජනවත් විය හැකිය.
වෘත්තීය ක්රමලේඛකයා හොඳ කේතය සඳහා මෙම ටැගය භාවිතා කළ යුතුය. එය කණ්ඩායම් වැඩ සඳහා ද හොඳ ය.
// MARK: example Web Service start here
// TODO: example 1
// FIXME: Please change BASE url before live
මේ වගේ ක්රමයක් සොයා ගැනීම පහසුය
Xcode 11 හි ඔවුන් සක්රිය කළ හැකි මිනිමාප් එකතු කළහ Editor -> Minimap
.
මිනිමාප් මඟින් කේතයේ වේගවත් දිශානතිය සඳහා එක් එක් ලකුණු පෙළ පෙන්වනු ඇත. සෑම සලකුණක්ම ලියා ඇත// MARK: Variables
//MARK:
නැත පෙනේ Xcode 6.3.2 මට වැඩ කරන්න. කෙසේ වෙතත්, මෙය වැඩ කිරීමට මා කළේ මෙයයි :
1) කේතය:
import Cocoa
class MainWindowController: NSWindowController {
//MARK: - My cool methods
func fly() {
}
func turnInvisible() {
}
}
2) : විවරණය jump bar
එකතු කිරීමේදී කිසිවක් වෙනස් නොවන බව පෙනේ //MARK
. කෙසේ වෙතත්, මම පැනීමේ තීරුවේ දකුණු පස ඇති නම මත ක්ලික් කළහොත්, එය පවසන පරිදි MainWindowController(with a leading C icon)
, උත්පතන කවුළුවක් මඟින් // MARK: comment හි ප්රති showing ල පෙන්වන දර්ශනයක් පෙන්වනු ඇත, එනම් “මගේ සිසිල් ක්රම” යනුවෙන් සඳහන් ශීර්ෂ පා: යක්:
3) මගේ කේතයේ එක් ක්රමයක් මත ක්ලික් කළහොත්, එම ක්රමය පැනීමේ තීරුවේ නිවැරදි පිවිසුම බවට පත්වන බව ද මම දනිමි. MainWindowController(with a leading C icon)
පැනීමේ තීරුවේ නිවැරදිම පිවිසුම ලබා ගැනීම සඳහා, මගේ ක්රමවලට ඉහළින් ඇති සුදු අවකාශය මත ක්ලික් කළ යුතුය.
බිල්ඩින් කොකෝවා ඇප්ස් හි නවතම අනුවාදයේ ඇපල් පවසයි ,
ස්විෆ්ට් සම්පාදකයාට පෙර සැකසුම් යන්ත්රයක් ඇතුළත් නොවේ. ඒ වෙනුවට, එකම ක්රියාකාරීත්වය සාක්ෂාත් කර ගැනීම සඳහා සම්පාදක-කාල ගුණාංග, වින්යාසයන් සහ භාෂා අංගයන්ගෙන් ප්රයෝජන ගනී. මෙම හේතුව නිසා, පෙර සැකසුම් නියෝග ස්විෆ්ට් හි ආනයනය නොකෙරේ.
# අක්ෂරය තවමත් ඔබ විවිධ ගොඩනැඟිලි වින්යාසයන් හා ඒ හා සමාන දේවල් සමඟ කටයුතු කරන ආකාරය ලෙස පෙනේ, නමුත් ඔවුන් පෙනෙන්නේ ප්රාග්මා නහරයේ බොහෝ පෙර සැකසුම් සඳහා වන ඔබේ අවශ්යතාවය කපා හැර වෙනත් භාෂා අංගයන් වෙත ඔබව යොමු කිරීමට ය. සමහර විට මෙය ක්රීඩා පිටියේ ක්රියාකාරිත්වයට සහ REPL සම්පුර්ණයෙන්ම සම්පාදනය කරන ලද කේතයට හැකි තරම් සමීපව හැසිරීමට උපකාරී වේ.
කළ යුතු අයිතමයක් එක් කරන්න: TODO උපසර්ගය සමඟ අදහස් දැක්වීමක් ඇතුළත් කරන්න :. උදාහරණයක් ලෙස: // TODO: [ඔබගේ කළ යුතු අයිතමය].
දෝෂ නිවැරදි කිරීමේ මතක් කිරීමක් එක් කරන්න: FIXME උපසර්ගය සමඟ අදහසක් ඇතුළත් කරන්න :. උදාහරණයක් ලෙස: // FIXME: [ඔබේ දෝෂ නිවැරදි කිරීමේ මතක් කිරීම].
ශීර්ෂයක් එක් කරන්න: MARK උපසර්ගය සමඟ අදහසක් ඇතුළත් කරන්න :. උදාහරණයක් ලෙස: // මාක්: [ඔබේ කොටස ශීර්ෂය].
බෙදුම් රේඛාවක් එක් කරන්න: ව්යාඛ්යාවට ඉහළින් බෙදුම්කරුවෙකු එක් කිරීමට, විවරණයේ විවරණ කොටසට පෙර යටි ඉරක් (-) එක් කරන්න. උදාහරණයක් ලෙස: // මාක්: - [ඔබේ අන්තර්ගතය]. විවරණයට පහළින් බෙදුම්කරුවෙකු එක් කිරීමට, විවරණයේ විවරණ කොටසෙන් පසුව යටි ඉරක් (-) එක් කරන්න. උදාහරණයක් ලෙස: // මාක්: [ඔබේ අන්තර්ගතය] -.
මේක උත්සාහ කරන්න:
// MARK: Reload TableView
func reloadTableView(){
tableView.reload()
}
ප්රග්මා සලකුණ යනු ඔබේ කේතයේ කියවීමේ හැකියාව වැඩි දියුණු කිරීමේ ක්රමයකි. ප්රාග්මා අදහස් Xcode ජම්පර් එකේ ටැග් මෙන් දිස් වේ.
//MARK: <Your comment goes here>
උදාහරණය: කේතයේ,
//MARK: Properties
// MARK: View Life cycle
//MARK: Helper methods
Xcode පැනීමේ තීරුවේ එය දිස්වන්නේ එලෙසයි.