@ আইবি ডিজাইনেবল ত্রুটি: আইবি ডিজাইনেবলস: স্বয়ংক্রিয় বিন্যাসের স্থিতি আপডেট করতে ব্যর্থ: ইন্টারফেস নির্মাতা কোকো টাচ সরঞ্জাম ক্র্যাশ হয়েছে


157

আমার কাছে ইউআইটিেক্সটভিউয়ের একটি খুব সহজ উপক্লাস রয়েছে যা "প্লেসহোল্ডার" কার্যকারিতা যুক্ত করে যা আপনি পাঠ্য ক্ষেত্রের অবজেক্টে নেটিভ খুঁজে পেতে পারেন। সাবক্লাসের জন্য আমার কোডটি এখানে:

import UIKit
import Foundation

@IBDesignable class PlaceholderTextView: UITextView, UITextViewDelegate
{
    @IBInspectable var placeholder: String = "" {
        didSet {
            setPlaceholderText()
        }
    }
    private let placeholderColor: UIColor = UIColor.lightGrayColor()        
    private var textColorCache: UIColor!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.delegate = self
    }
    
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.delegate = self
    }
    
    func textViewDidBeginEditing(textView: UITextView) {
        if textView.text == placeholder {
            textView.text = ""
            textView.textColor = textColorCache
        }
    }
    
    func textViewDidEndEditing(textView: UITextView) {
        if textView.text == "" && placeholder != "" {
            setPlaceholderText()
        }
    }
    
    func setPlaceholderText() {
        if placeholder != "" {
            if textColorCache == nil { textColorCache = self.textColor }
            self.textColor = placeholderColor
            self.text = placeholder
        }
    }
}

UITextViewআইডেন্টিটি ইন্সপেক্টরটিতে অবজেক্টের জন্য ক্লাস পরিবর্তন করার পরে PlaceholderTextView, আমি এটারিবিউট ইন্সপেক্টরটিতে Placeholderসম্পত্তি ঠিকঠাক করে দিতে পারি। অ্যাপটি চলাকালীন কোডটি দুর্দান্ত কাজ করে তবে ইন্টারফেস বিল্ডারে স্থানধারক পাঠ্যটি প্রদর্শন করে না। আমি নিম্নলিখিতগুলি অবরুদ্ধকরণবিহীন ত্রুটিগুলিও পেয়েছি (আমি এটি ধরে নিয়েছি কেন এটি নকশাকালীন সময়ে উপস্থাপনা করা হচ্ছে না):

ত্রুটি: আইবি ডিজাইনেবল: অটো লেআউট স্থিতি আপডেট করতে ব্যর্থ: ইন্টারফেস বিল্ডার কোকো টাচ সরঞ্জাম ক্র্যাশ হয়েছে

ত্রুটি: আইবি ডিজাইনেবল: প্লেসহোল্ডারেক্সটভিউয়ের উদাহরণটি রেন্ডার করতে ব্যর্থ: ভিউ রেন্ডারিংয়ে 200 এমএসের বেশি সময় লেগেছে। আপনার অঙ্কন কোড ধীর পারফরম্যান্সে ভুগতে পারে।

এই ত্রুটিগুলি কী কারণে ঘটছে তা আমি খুঁজে বের করতে পারছি না। দ্বিতীয় ত্রুটিটি কোনও অর্থবোধ করে না, কারণ আমি এমনকি ড্রআরেক্ট ()ও ওভাররাইড করছি না। কোন ধারনা?


1
আমি এই ত্রুটি পেয়েছিলাম। বস্তুটি একটি পরীক্ষামূলক প্রকল্পে ভাল কাজ করেছে, তবে আমার মূল প্রকল্পে নয় (একটি সারণীতে)। বিকাশকারী.অ্যাপল .com/ লাইব্রেরি / ম্যাক / রিসিপস / আই এর মতে , আমি বেছে বেছে সম্পাদক> ডিবাগ সিলেক্ট ভিউ বেছে নিয়েছি। তারপরে আমি "ভিউগুলি ডিবাগ করতে পারলাম না" পেয়েছি "" আপনার কাঠামোর আইওএস তৈরির জন্য সঠিক বিল্ড সেটিংস রয়েছে তা নিশ্চিত করুন "" গুগলে এই ত্রুটির জন্য কিছুই আসে নি।
ম্যাট

উত্তর:


238

ইন্টারফেস বিল্ডার কোকোয়া টাচ সরঞ্জাম ক্র্যাশ হয়ে গেলে ক্র্যাশ প্রতিবেদন তৈরি হয়। থিসগুলি অবস্থিত ~/Library/Logs/DiagnosticReportsএবং নামযুক্ত IBDesignablesAgentCocoaTouch_*.crash। আমার ক্ষেত্রে এগুলিতে একটি কার্যকর স্ট্যাক-ট্রেস রয়েছে যা আমার কোডটিতে বিষয়টি চিহ্নিত করেছে।


1
ধন্যবাদ! এটি সুপার সহায়ক ছিল! ক্র্যাশ প্রতিবেদনগুলির তথ্য আপনি কোথায় পেলেন? :)
বেন-জি

57
আমার ক্ষেত্রে, আমি আবিষ্কার করেছি যে এটি initFrame(frame: CGRect)অবশ্যই সংজ্ঞায়িত করা উচিত। আপনি যদি নিজের initপদ্ধতি (গুলি) সরবরাহ করেন তবে তা করুন।
ট্র্যাভিস

এটিই ছিল সেরা সমাধান। আমি দর্শনগুলির মধ্যে একটিতে আরম্ভের সাথে ফ্রেম বাস্তবায়ন করছিলাম না।
হটফজজসুন্দে

3
আমি ডায়াগোনস্টিক প্রতিবেদনগুলি ব্যবহার করেছি এবং @ ট্র্যাভিস উল্লিখিত মত, আমার init(frame: CGRect)স্পষ্টভাবে ওভাররাইড করা দরকার কারণ আমার একটি কাস্টম iniপদ্ধতি ছিল। আপনার জন্য ক্র্যাশ প্রতিবেদন মাধ্যমে সন্ধান করতে চাইতে পারেন use of unimplemented initializer 'init(frame:)'অধীনে সরাসরি Application Specific Informationপ্রতিবেদনে। ধন্যবাদ বন্ধুরা! এই উত্তরে ডাবল জয়!
ক্রিস

4
যথারীতি, এই লগ ফাইলটি ব্যবহারকারী ডায়াগনস্টিক প্রতিবেদন গোষ্ঠীর অধীনে কনসোল ম্যাকস অ্যাপ্লিকেশনটিতেও উপলব্ধ ।
পাওলো ম্যাটোস

51

আমি একই সমস্যা কয়েকবার ছিল। আমি যখন স্টোরিবোর্ডে আইবি ডিজাইনযোগ্য নিব লোড করছিলাম তখন উভয়বার এটি শুরু হয়েছিল যখন নিব ভিউতে ফিট করতে সক্ষম হয় নি (যেমন আমার কাছে ইউআইভিউ-র একটি বোতাম বন্ধ ছিল তবে এখনও নিবিতে ছিল)। একবার আমি স্থির করে দিয়েছিলাম যে এক্সকোড এখনও আমাকে ত্রুটি দিয়েছে তাই আমি এলোমেলোভাবে ত্রুটিটি দেওয়া বন্ধ না করা পর্যন্ত আমি এক্সকোড পুনরায় চালু করেছি।

আশা করি এটা কাজে লাগবে.

আপডেট: আমি সবেমাত্র "ইন্টারফেস বিল্ডার কোকোয়া টাচ সরঞ্জাম" নামক সমস্ত প্রক্রিয়াটি মেরেছি, এক্সকোড পুনরায় চালু করেছি এবং ত্রুটিটি চলে গেছে। জানেন না এটি সর্বদা কার্যকর হবে কি না।


2
আমি এখনও বুঝতে পারি না কেন, আপনি যদি কোনও initপদ্ধতিতে ওভাররাইট না করেন তবে প্রশ্নের অংশ হিসাবে পোস্ট করা কোডটি IB Designablesত্রুটিগুলি আর দেখায় না এবং স্থানধারকটিকে ইন্টারফেস বিল্ডারে যথাযথভাবে রেন্ডার করা হয়।
উইলিংটন ভেগা

2
সম্ভবত এটি একটি বাগ এবং এটি ঠিক হওয়ার জন্য আমাদের কেবল অপেক্ষা করতে হবে। সম্ভবত এক্সকোড 6.3 এ।
ইউসুফ মোয়াওয়াদ

3
এক্সকোড 7.1.1 এবং এখনও উপস্থিত। এক্সকোড পুনরায় চালু করা সমস্যার সমাধান করেনি। ইন্টারফেস বিল্ডার কোকোয়া টাচ টুল নামক সমস্ত প্রক্রিয়াটি আমি ম্যানুয়ালি মেরে ফেললাম, তারপরে এক্সকোড ক্র্যাশ হয়ে গেছে, এটিকে পুনরায় চালু করে এবং এটি কাজ শুরু করে।
ক্রিশ্চিয়ান পেনা

1
গুরুত্বপূর্ণ বিষয়: সত্যই FIRST ইন্টারফেস বিল্ডার প্রক্রিয়াগুলিকে হত্যা করে, তবে
এক্সকোড

2
এক্সকোড 8.1 এই ত্রুটিটি এখনও ঘটে। মূলত আরম্ভ ওভাররাইড না করায় কিন্তু থিম যোগ করার পরেও অবিচল থাকে। @ দ্য ইয়ে বলেছেন যেভাবে এক্সকোড পুনরায় আরম্ভ করার পরে ইন্টারফেস বিল্ডার প্রক্রিয়াগুলি মেরে ফেলতে হয়েছিল
জন ফাউলর

39

আমার ক্ষেত্রে, আমি ভিউটি তৈরির জন্য initWithFrame / initWithCoder পদ্ধতিতে পরবর্তী কাজ করছিলাম:

className = NSStringFromClass([self class]);
self.view = [[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil] firstObject];

দেখে মনে হচ্ছে আমার প্রধান বান্ডিলটি ব্যবহার করার কথা ছিল না , পরিবর্তে ক্লাসের বান্ডিলটি। সুতরাং আমি নিম্নলিখিতটির জন্য কোডটি প্রতিস্থাপন করেছি এবং এটি কাজ করেছে:

bundle = [NSBundle bundleForClass:[self class]];
className = NSStringFromClass([self class]);
self.view = [[bundle loadNibNamed:className owner:self options:nil] firstObject];

আমি ভেবেছিলাম সম্ভবত এটি কারও সাহায্য করবে।


1
এটি আমার ইস্যুও ঠিক করে দিয়েছে! ধন্যবাদ @ জামৌকেল!
এডোপ্লেভি

এই এক আমার সমস্যা স্থির। মানুষ!!! আমি এই "বান্ডেলফোর্ডক্লাস" লাইনটি লক্ষ্য করতে পারিনি যদিও আমি এই সমাধান কয়েকবার দেখেছি। :(
এলক_ক্লোনার

let bundle = Bundle(for: ValidatingTextField.self)গ্রহণকারী
CFR

14

আপনি ইন্টারফেস বিল্ডার এবং তারপর ব্যবহারে আপনার কাস্টম দৃশ্য নির্বাচন হতে পারে Editor, Debug Selected Views। এটি IBDesignableAgentCocoaTouchসমস্ত তথাকথিত ডিবাগ সেশন শুরু করবে যখন সমস্ত ব্রেকপয়েন্টগুলি (ব্যতিক্রম ব্রেকপয়েন্ট সহ) কাজ করবে এবং আপনার দৃশ্যটি ক্র্যাশ করার জায়গাটি সঠিকভাবে সনাক্ত করতে পারে।


পারফেক্ট! এটি আমার সমস্যাটিও খুঁজে পেয়েছিল - একটি ভুল ফন্ট। যা ব্যাখ্যা করে যে ছয়জনের মধ্যে খুব একই রকমের আইবিডিজিনেবলগুলির মধ্যে একটির কেন ব্যর্থ হয়েছিল।
zkarj

13

জন্য সুইফট - Xcode 8

@IBInspectableআমার জন্য সমস্যা সৃষ্টি করার ক্ষেত্রে ডিফল্ট মান হিসাবে alচ্ছিক মান যুক্ত করা ।

এটি কাজ করবে না:

@IBInspectable var repeatImage: UIImage = UIImage(named:"myImage")!{
      didSet {
       // configureView
      }
}

এই কাজ করা উচিত:

@IBInspectable var repeatImage: UIImage = RepeatImageView.getDefaultImage() {
    didSet {
        // configureView()
    }
}

class func getDefaultImage() -> UIImage {
    if let defaultImage = UIImage(named: "myImage") {
        return defaultImage
    } else {
        return UIImage()
    }
}

@ ডাংট্রান আপনি কোন সমস্যার মুখোমুখি?
মোহাম্মদ যায়েদ পাঠান

1
Ptionচ্ছিক হ্যান্ডলিং ক্রাশ প্রতিরোধ করে। তবে আপনি কি জানেন যে কি কারণে ইউআইআইজেজ (নামকরণ :) অবিচ্ছিন্নভাবে ফিরে আসছে?
স্কটিবিলেডস

এই কোডটি সম্পর্কে মন্তব্য করা আমার জন্য এটি ঠিক করেছে `@objc @ উপলভ্য (* অবচিত, পুনরায় নামকরণ:" ব্যাকগ্রাউন্ড কালার ") @ আইবিআইস্পেসটেবল পাবলিক ভের সিগনেচারব্যাকগ্রাউন্ড কালার: ইউআইসিওলর =। হোয়াইট {ডিডসেট {ব্যাকগ্রাউন্ড কালার = সিগনেচারব্যাকগ্রাউন্ড
কালার

9

আমি একই রকম ইন্টারফেস বিল্ডার সমস্যাগুলি উপস্থাপনযোগ্যকে রেন্ডারিংয়ের অভিজ্ঞতা পেয়েছিলাম।

এই উত্তরে প্রস্তাবিত কৌশলটি ব্যবহার করে আমি চিত্রটি আক্ষরিক ব্যবহারের ক্ষেত্রে বিষয়টি সন্ধান করতে সক্ষম হয়েছি।

রেন্ডারিং ক্রাশ

self.backgroundImage.image =  #imageLiteral(resourceName: "rectangleCenter")

কোনও রেন্ডারিং ক্র্যাশ নেই

self.backgroundImage.image =  UIImage(named: "rectangleCenter")

আপনি একজন নায়ক
নাথানজিটার

চিত্রের আক্ষরিক আইবি-র সাথে বেমানান কেন এমন কোনও ধারণা? আমারো একই ইস্যু ছিল.
সুইফটসনামসেক

6

প্রকৃতপক্ষে যদি আপনার স্টোরিবোর্ডের কোনও দৃশ্যে আপনার কিছু পুরানো ব্যবহারকারীর সংজ্ঞায়িত বৈশিষ্ট্য (যা বর্তমান দেখার জন্য বৈধ নয়), যা আপনার এজেন্টকে ক্র্যাশ করতে পারে।

তদাতিরিক্ত, কখনও কখনও এটি এক্সকোডের একটি বাজে বাগের কারণে ঘটে। এটি পরীক্ষা করার জন্য, আপনি যখন স্টোরিবোর্ডে আনচেক করুন সম্পাদক> স্বয়ংক্রিয়ভাবে ভিউ রিফ্রেশ করুন, তারপরে অন্য কোনও ফাইলে যান, পরিষ্কার করুন এবং আপনার প্রকল্পটি পুনরায় চালু করুন। আপনি আবার স্টোরিবোর্ডে প্রবেশ করার পরে, আপনি সম্পাদক> পুনরায় রিফ্রেশ দেখুন ক্লিক করতে পারেন এবং আবার স্বয়ংক্রিয়ভাবে চেক করতে পারেন। সেও আমার সমস্যাটি একবার সমাধান করেছে।

যদি উভয়ই কাজ না করে, তবে সম্ভবত আপনি আপনার আইবি ডিজাইনেবল ভিউ সম্পর্কে কিছু ভুল করেছেন, সুতরাং স্টোরবোর্ডে আপনার ক্রাশ হওয়া ভিউগুলি চয়ন করুন এবং সম্পাদক> ডিবাগ ভিউগুলিতে ক্লিক করে ডিবাগ করুন


তুমি fromশ্বরের দান।
অ্যান্ড্রুকার

4

এই প্রশ্নের ক্ষেত্রে এটি নয় তবে সম্ভবত আমি অন্য কাউকে সাহায্য করব।

আমার @ আইবিডি ডিজাইনেবল ক্লাসে আমি দুটোই বাস্তবায়ন করি নি তখন আমারও একই সমস্যা হয়েছিল:

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    // custom setup
}

override init(frame: CGRect) {
    super.init(frame: frame)

    // custom setup
}

আপনার সর্বদা দুটি init পদ্ধতি প্রয়োগ করা উচিত। যখন আপনি কোড থেকে আপনার ভিউটি শুরু করেন এবং ইন্টারফেসবিল্ডার থেকে একটি ডিকোডার দিয়ে আর্ট ব্যবহার করা হয় তখন ফ্রেমের সাথে ইনার ব্যবহার করা হয়।
স্কোডিক.ও

4

আমারও একই সমস্যা ছিল এবং আমি এটি 'ব্যবহার_ ফ্রেমওয়ার্কগুলি যোগ করে সমাধান করেছি!' আমার প্রকল্পের পডফাইলে

আশা করি এটি আপনাকে সহায়তা করবে।


এটি আমার পক্ষে কাজ করেছিল যখন আমি JVFloatLabeledTextField
saswanb

এটি আমার পক্ষে কাজ করেছিল, একটি পুরানো ওবজ-সি প্রকল্প গ্রহণ করা যা মোটামুটি পুরানো। আইবি এর পরে ক্রিসমাস গাছের মতো জ্বলছে! ধন্যবাদ.
অঙ্কিত ..

3

আমার ক্ষেত্রে এটি কোনওভাবে কোনও কার্থেজ কাঠামোর সাথে সম্পর্কিত ছিল যা আমি ব্যবহার করছিলাম। আমাকে রানপথ অনুসন্ধানের পথগুলি তৈরির সেটিংয়ে $ (PROJECT_DIR) / কার্থেজ / বিল্ড / আইওএস যুক্ত করতে হয়েছিল


অন্যান্য সমস্ত পোস্ট সমাধানের চেষ্টা করার পরে ... এটি আমার পক্ষে কাজ করা একমাত্র ফিক্স! ধন্যবাদ!
জোয়েল

3

আমার ক্ষেত্রে এটি ওয়ানসিগনালের সমস্যা ছিল। স্পষ্টতই, তাদের ভার্সনটি ২.২.০ এবং তার উপরের সংস্করণে রয়েছে। 2.1.6 এ স্যুইচ করা হয়েছে এবং সবকিছু আবার দুর্দান্ত!

পরীক্ষা করে দেখুন এই


1

আমি এটি ডিবাগ করার সময় আমি জানতে পারলাম কিছু ক্লাস রয়েছে যা ইউআই সংশোধন করছে। সাধারণত মার্কেএলবেল যা ইউআইএলবেল বা অন্য কোনও শ্রেণীর সাবক্লাসিং ইউআইভিউ এবং রান টাইমে ইউআই অঙ্কন করে এবং অটোলেআউট ইঞ্জিনের সাথে সংঘর্ষে একটি সাবক্লাস। এই কাস্টম দর্শনগুলির জন্য নির্দিষ্ট প্রস্থ বা উচ্চতা দেওয়ার চেষ্টা করুন। যদি এটি আপনার সমস্যার সমাধান না করে তবে নিম্নলিখিত সমাধানগুলি চেষ্টা করে দেখুন: -

সমাধান 1: - আপনার পড ফাইলে অভ্যন্তরীণ মন্তব্য # ব্যবহার_ফ্রেমওয়ার্ক।

সমাধান 2: - উদ্ভূত ডেটা মুছতে চেষ্টা করুন। 1. আপনার এক্সকোডের সম্পাদক উইন্ডোটি বন্ধ করুন এবং সিমুলেটরটি প্রস্থান করুন -> 2. এক্সকোড পছন্দসমূহ -> অবস্থানগুলিতে যান -> 3. প্রাপ্ত তথ্যের পথ দেখানো ছোট ধূসর তীরটি ক্লিক করুন -> 4. আপনার প্রকল্প নির্বাচন করুন -> 5. ভিতরে থাকা সমস্ত ফোল্ডার মুছুন 5. -> 6. এক্সকোড ছেড়ে প্রস্থান করুন


1

এটি আপনার পডফিলের নীচে যুক্ত করুন এবং চালান pod install

# Workaround for Cocoapods issue #7606

    post_install do |installer|
        installer.pods_project.build_configurations.each do |config|
            config.build_settings.delete('CODE_SIGNING_ALLOWED')
            config.build_settings.delete('CODE_SIGNING_REQUIRED')
        end
    end

1

আমার শেষে এই স্ক্রিপ্টটি জুড়ুন Podfileএবং pod installআবার সম্পাদন করলেন।

post_install do |installer|
    installer.pods_project.build_configurations.each do |config|
        config.build_settings.delete('CODE_SIGNING_ALLOWED')
        config.build_settings.delete('CODE_SIGNING_REQUIRED')
    end
end

1

একটি বড় সমস্যা হ'ল আপনি যখন আইবিডি ডিজাইনেবল তৈরি করছেন তখন নিশ্চিত হয়ে নিন যে কোকোপড ফাইলটি ইউআইটিএসে অন্তর্ভুক্ত নয় অন্যথায় এটি ক্রাশের কারণ হতে পারে।


0

আমি কারণটি খুঁজে পাই কারণ আপনার এক্সিব স্টোরিবোর্ডে নকশার মতো আকারের নয়। নিশ্চিত করুন যে এক্সিবের একই উচ্চতা এবং প্রস্থ রয়েছে।


0

আমি কেবল কোডটির এই লাইনটি মিস করছি platform :ios, '7.0' এবং সমস্যার সমাধান হয়েছে। আপনার পড ফাইলে এই লাইনটি আপডেট করুন এবং আপনার পডের সমস্যা আপডেট হবে।


0

আমার জন্য এটি একটি অনুপস্থিত স্বাক্ষর শংসাপত্র ছিল, কারণ আমি কখনই অ্যাপটি চালাইনি, তাই এক্সকোড এখনও শংসাপত্র তৈরি করেনি। আমি একবার অ্যাপ্লিকেশন চালানোর পরে, IBDesignableরেন্ডারিং ভাল কাজ করেছে।


0

আপনি যদি অন্য বিকাশকারীর কাছ থেকে কোড পেয়ে থাকেন এবং আপনি এই ত্রুটিটি পান তবে এটি এমন হয়। শেষ ঘন্টা

pod install

এটি আমার পক্ষে কাজ করেছে। আশা করি এটা সাহায্য করবে.


0

আপনি সরাসরি আরম্ভ করছেন না তা নিশ্চিত করুন UIImageবাUIFont আপনার প্রকল্পে যুক্ত সম্পদ বা ফন্ট ব্যবহার ব্যবহার ।

আমি সর্বদা private func setUp()আমার @IBDesignableকাস্টম UIক্লাসে একটি তৈরি করি । যা থেকে বলা হয় init(frame: CGRect), init?(coder aDecoder: NSCoder)। সুতরাং আমি অবশেষে setup()নিম্নলিখিত হিসাবে আপডেট ।

private func setUp() {

     //... Doing initial configurations

     // iconImageView.image = UIImage(named: "IconImageName")! // Causing the Crash, use if let OR guard let instead
     if let icon = UIImage(named: "IconImageName") {
          iconImageView.image = icon
          iconImageView.frame.size = icon.size
     }

     // nameLabel.font =  UIFont(name: "Calibri-Light", size: 15.0) // Causing the Crash, use if let OR guard let instead
     if let font = UIFont(name: "Calibri-Light", size: size) {
          nameLabel.font =  font
     } else {
          nameLabel.font = UIFont.systemFont(ofSize: size) 
     }

     // Doing other stuffs
}

-1

প্রকল্পের অন্য কোথাও যদি আপনার ত্রুটি থাকে তবে কেবল এটির মন্তব্য করুন এবং ডিজাইনেবল আপডেট করার জন্য প্রথমে ডিজাইনেবল চালিয়ে যান এবং অন্যান্য কোডগুলিকে অসন্তুষ্ট করেন Just এটা আমার জন্য কাজ করে.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.