উদ্দেশ্য সিতে, আমি #pragma mark
আমার কোডের বিভাগগুলিকে প্রতীক নেভিগেটরে চিহ্নিত করতে ব্যবহার করতে পারি। যেহেতু এটি সি প্রিপ্রসেসর কমান্ড, এটি সুইফটে উপলভ্য নয়। সুইফটে এর জন্য কি কোনও অবস্থান আছে, বা আমাকে কুৎসিত মন্তব্যগুলি ব্যবহার করতে হবে?
উদ্দেশ্য সিতে, আমি #pragma mark
আমার কোডের বিভাগগুলিকে প্রতীক নেভিগেটরে চিহ্নিত করতে ব্যবহার করতে পারি। যেহেতু এটি সি প্রিপ্রসেসর কমান্ড, এটি সুইফটে উপলভ্য নয়। সুইফটে এর জন্য কি কোনও অবস্থান আছে, বা আমাকে কুৎসিত মন্তব্যগুলি ব্যবহার করতে হবে?
উত্তর:
তুমি ব্যবহার করতে পার // MARK:
এখানে আরও আলোচনা হয়েছে যে ক্লাস এক্সটেনশনের উদার ব্যবহার যে কোনও উপায়ে হতে পারে practice যেহেতু এক্সটেনশনগুলি প্রোটোকলগুলি কার্যকর করতে পারে, আপনি উদাহরণস্বরূপ আপনার টেবিল ভিউ প্রতিনিধি পদ্ধতিগুলিকে একটি এক্সটেনশনে রেখে দিতে পারেন এবং আপনার কোডটি সক্ষমের চেয়ে আরও বেশি শব্দার্থক স্তরে গোষ্ঠীভুক্ত #pragma mark
করতে পারেন।
// MARK:
, // TODO:
এবং // FIXME
সুইফট উৎস এবং লাফ বারে তাদের তালিকায়। (বিটিডাব্লু, এটি ইতিমধ্যে (ওবজে) সি উত্সে করেছে - #pragma mark
এটি একমাত্র উপায় নয়) এবং হ্যাঁ, আপনি এখনও মেনুতে বিভাজক স্থাপন -
করতে আপনার যুক্ত করতে পারেন MARK
।
MARK
এখনই কাজ করার পরেও কিছু ধরণের শব্দার্থবিজ্ঞান সম্পর্কিত কোড (বিশেষত প্রোটোকল বাস্তবায়ন) গোষ্ঠীগুলির জন্য এক্সটেনশনগুলি ব্যবহার করা এখনও কার্যকর হতে পারে। আইএমএইচও এটি প্রয়োগকারী পদ্ধতিগুলির ঠিক পাশেই আপনার প্রোটোকল কনফারেন্সিয়েশন ঘোষণার চেয়ে আরও ভালভাবে পড়তে পারে, ফাইলের শীর্ষে 5 টি প্রোটোকল ঘোষণা নয় এবং 50 সম্পর্কিত পদ্ধতি বাস্তবায়ন এলোমেলোভাবে নীচে কোথাও ছড়িয়ে ছিটিয়ে থাকে।
#pragma mark
। // MARK: -
কেবল একটি বিভাজক, // MARK: - stuff
আপনাকে একটি বিভাজক এবং একটি শিরোনাম // MARK: - stuff -
দেয় এবং আপনাকে একটি মন্তব্য লাইনে আপনাকে পৃথককারী, শিরোনাম এবং অন্য বিভাজক দেয়।
এক্সকোড 5 পর্যন্ত প্রিপ্রসেসর নির্দেশিকা #pragma mark
বিদ্যমান।
এক্সকোড 6 থেকে, আপনাকে ব্যবহার করতে হবে // MARK:
এই প্রিপ্রসেসর বৈশিষ্ট্যগুলি উত্স কোড সম্পাদকের ফাংশন ড্রপ ডাউন বাক্সে কিছু কাঠামো আনতে দেয়।
কিছু উদাহরণ :
// MARK:
-> এর আগে একটি অনুভূমিক বিভাজক হবে
// MARK: your text goes here
-> ড্রপ ডাউন তালিকায় গা your়ভাবে 'আপনার পাঠ্য এখানে যায়' রাখে
// MARK: - your text goes here
-> একটি অনুভূমিক বিভাজক এর আগে ড্রপ ডাউন তালিকায় গা bold়ভাবে 'আপনার পাঠ্য এখানে যায়' রাখে
আপডেট: স্ক্রিনশট যুক্ত করেছে কারণ কিছু লোককে এখনও এ নিয়ে সমস্যা বলে মনে হচ্ছে:
// MARK: - text
এবং আমার জন্য ড্রপ ডাউন তালিকাটি দেখায় মার্ক: কেবল পাঠ্যের পরিবর্তে পাঠ্য ।
প্রগমা চিহ্ন বনাম এক্সটেনশনগুলি ব্যবহার করতে আগ্রহী যারা (প্রথম মন্তব্যে উল্লিখিত), এটি কীভাবে একজন সুইফ্ট ইঞ্জিনিয়ারের কাছ থেকে বাস্তবায়ন করবেন:
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 এ দেখানো হয়েছে)
আ। করতে : //TODO: - viewDidLoad
এটি টোডোর অধীনে গ্রুপ ফাংশন করবে : - দেখুনডিডলড বিভাগ (স্ক্রিনশট 2 এ দেখানো হয়েছে)
III। আমাকে ঠিক কর : //FIXME - viewDidLoad
এটি FIXME এর আওতায় গ্রুপবদ্ধ করবে: - দেখুনডিডলড বিভাগ (স্ক্রিনশট 3 এ দেখানো হয়েছে)
বিশদ জন্য এই আপেল ডকুমেন্টেশন চেক করুন।
এক্সকোড জাম্প বার সম্পর্কে অ্যাপলের অফিসিয়াল ডকুমেন্ট: জাম্প বারে কোড টীকা যুক্ত করুন
!!!:
এবং ???:
কখনও কখনও প্রদর্শিত হতে সক্ষম হয় না।
উদ্দেশ্য-সি কোডে এক্সকোড এমন মন্তব্যগুলি সনাক্ত করে // MARK: - foo
যা এর চেয়ে কিছুটা বেশি বহনযোগ্য #pragma
। তবে এগুলি খুব বেশি (এখনও?) তুলে নেওয়া হবে বলে মনে হয় না।
সম্পাদনা: এক্সকোড 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 অনুমান করছি, আমি আশা করি।
যাইহোক, এটি এর পথে আছে।
এক্সকোড এখন আপনার কোডটি বর্ননা করতে // মার্ক :, // টোডো: এবং // ফিক্সমি ল্যান্ডমার্কগুলিকে সমর্থন করে এবং এটিকে জাম্প বারে তালিকাভুক্ত করে
ব্যবহার
// 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
এটির মতো পদ্ধতিটি পাওয়া সহজ
//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)
, তবে একটি পপআপ উইন্ডোটি // মার্কের মন্তব্য প্রদর্শন করবে: মন্তব্য, একটি শিরোনাম যা "আমার শীতল পদ্ধতিগুলি" বলে:
3) আমি আরও লক্ষ্য করি যে আমি যদি আমার কোডের যে কোনও একটি পদ্ধতিতে ক্লিক করি, তবে পদ্ধতিটি জাম্প বারে ডানদিকে প্রবেশ করবে। অর্ডার পাওয়ার জন্য MainWindowController(with a leading C icon)
লাফ বারে ডানদিকে অবস্থিত এন্ট্রি হতে, আমি আমার পদ্ধতি উপরে হোয়াইটস্পেস উপর ক্লিক করতে হবে।
অ্যাপল বিল্ডিং কোকো অ্যাপসের সর্বশেষতম সংস্করণে জানিয়েছে ,
সুইফ্ট সংকলকটিতে প্রিপ্রসেসর অন্তর্ভুক্ত নেই। পরিবর্তে, এটি একই কার্যকারিতাটি সম্পাদন করতে সংকলন-সময় বৈশিষ্ট্যগুলি তৈরির কনফিগারেশন এবং ভাষার বৈশিষ্ট্যগুলির সুবিধা গ্রহণ করে। এই কারণে, প্রিপ্রসেসর নির্দেশাবলী সুইফটে আমদানি করা হয় না।
# টি চরিত্রটি এখনও বিভিন্ন বিল্ড কনফিগারেশন এবং সেগুলির মতো জিনিসগুলির সাথে আপনি কীভাবে কাজ করেন তা এখনও মনে হয়, তবে মনে হচ্ছে তারা প্রগমার শিরাতে আপনার পূর্বনির্ধারিত প্রয়োজনটি পুরোপুরি কাটাতে এবং সম্পূর্ণরূপে অন্যান্য ভাষার বৈশিষ্ট্যগুলিতে আপনাকে এগিয়ে দেওয়ার চেষ্টা করছে। সম্ভবত এটি খেলার মাঠগুলির অপারেশন এবং সম্পূর্ণ সংকলিত কোডের সাথে যথাসম্ভব কাছাকাছি থাকা আরপিএলকে সহায়তা করার জন্য।
একটি করণীয় আইটেম যুক্ত করুন: উপসর্গের সাথে একটি মন্তব্য সন্নিবেশ করুন:। উদাহরণস্বরূপ: // টোডো: [আপনার করণীয় আইটেম]।
একটি বাগ ফিক্স অনুস্মারক যুক্ত করুন: উপসর্গ FIXME: সহ একটি মন্তব্য sertোকান: উদাহরণস্বরূপ: // ফিক্সএমই: [আপনার বাগ ফিক্স অনুস্মারক]।
শিরোনাম যুক্ত করুন: উপসর্গটি দিয়ে একটি মন্তব্য sertোকান মার্ক:। উদাহরণস্বরূপ: // মার্ক: [আপনার বিভাগের শিরোনাম]।
একটি বিভাজক রেখা যুক্ত করুন: একটি টীকা উপরে একটি বিভাজক যোগ করতে, টীকা মন্তব্য অংশ আগে একটি হাইফেন (-) যোগ করুন। উদাহরণস্বরূপ: // মার্ক: - [আপনার সামগ্রী]। একটি টীকা নীচে একটি বিভাজক যোগ করতে, টীকা মন্তব্য অংশ পরে একটি হাইফেন (-) যোগ করুন। উদাহরণস্বরূপ: // মার্ক: [আপনার সামগ্রী] -।
এটা চেষ্টা কর:
// MARK: Reload TableView
func reloadTableView(){
tableView.reload()
}
প্রাগমা চিহ্নটি আপনার কোডের পঠনযোগ্যতা উন্নত করার একটি উপায়। প্রাগমা মন্তব্যগুলি এক্সকোড জাম্পবারে ট্যাগগুলির মতো প্রদর্শিত হবে।
//MARK: <Your comment goes here>
উদাহরণ: কোডে,
//MARK: Properties
// MARK: View Life cycle
//MARK: Helper methods
এক্সকোড জাম্প বারে এটি প্রদর্শিত হবে।