কিভাবে ম্যানুয়ালি সদস্যদের অবচয় করা যায়


168

অবজেক্টিভ-সি-এর বিপরীতে, সুইফ্টের কোনও প্রিপ্রসেসর নেই, তাই কোনও শ্রেণীর সদস্যদের ম্যানুয়ালি অবহেলা করার কোনও উপায় কি এখনও আছে?

আমি এর অনুরূপ কিছু খুঁজছি:

-(id)method __deprecated;

উত্তর:


266

আপনি উপলভ্য ট্যাগটি ব্যবহার করতে পারেন, উদাহরণস্বরূপ:

@available(*, deprecated)
func myFunc() { 
    // ...
}

যেখানে * প্ল্যাটফর্ম (আইওএস, আইওএস অ্যাপ্লিকেশন এক্সটেনশন, ম্যাকোস, ওয়াচওএস, টিভিএস, * সকলের জন্য ইত্যাদি)।

এছাড়াও আপনি প্ল্যাটফর্ম থেকে তা ছিল সংস্করণ উল্লেখ করতে পারেন introduced, deprecated, obsoleted, renamed, এবং একটি message:

@available(iOS, deprecated:6.0)
func myFunc() { 
    // calling this function is deprecated on iOS6+
}

Or

@available(iOS, deprecated: 6.0, obsoleted: 7.0, message: "Because !")
func myFunc() {
    // deprecated from iOS6, and obsoleted after iOS7, the message "Because !" is displayed in XCode warnings
}

যদি আপনার প্রকল্পটি একাধিক প্ল্যাটফর্মকে লক্ষ্য করে, আপনি বেশ কয়েকটি ট্যাগ এর মতো ব্যবহার করতে পারেন:

@available(tvOS, deprecated:9.0.1)
@available(iOS, deprecated:9.1)
@available(macOS, unavailable, message: "Unavailable on macOS")
func myFunc() {
    // ...
}

সুইফ্ট ডকুমেন্টেশনে আরও বিশদ ।


সুইফ্ট 3 এ, =গুলি এস দ্বারা প্রতিস্থাপিত হয় :
স্যাম সোফেস 20:40

2
*, deprecated: 10.0 এটির জন্য অবমূল্যায়ন করবে iOS 10 , tvOS 10ইত্যাদি আমি মনে করি আমরা একত্রিত করা উচিত নয় *একটি সংস্করণ নম্বর দিয়ে? কীভাবে এটি আরও ভাল করা যায় সে সম্পর্কে কোনও ধারণা?
ফেব্ব

@ ফ্যাব এটি আইওএস নয়, অ্যাপ্লিকেশনটির সংস্করণ
অ্যাক্সেল গিলিন

1
ওটা সত্যি না. আপনি যে দস্তাবেজগুলি সংযুক্ত করেছেন সেগুলি থেকে: "নির্দিষ্ট প্ল্যাটফর্মের সংস্করণ"
ফেব্ব

1
ঠিক আমার আসল বিন্দুতে ফিরে আসা: @available(*, deprecated: 10.0)সুতরাং কোডটি কেবল আইওএস
ফ্যাব-এ

70

শুরু হচ্ছে সুইফট 3 এবং সুইফট 4 , সংস্করণ সংখ্যা ঐচ্ছিক। আপনি এখন সহজভাবে টাইপ করতে পারেন:

@available(*, deprecated)
func foo() {
    // ...
}

বা আপনি যদি কোনও বার্তা চান তবে তা চালিয়ে যান:

@available(*, deprecated, message: "no longer available ...")
func foo() {
    // ...
}

1
সুইফট ২.৩-এর ক্ষেত্রেও সংস্করণ নম্বর optionচ্ছিক।
ডনসং

3
সুইফট ২.৩-এর জন্য সিন্টেক্সটি মনে হয় @available(*, deprecated, message = "no longer available ...")কোনও বার্তা অন্তর্ভুক্ত করার সময়।
ড্যানিয়েল জ্যাং

@ ড্যানিয়েল, এটি খুব অদ্ভুত যে অ্যাপল এর অংশ পরিবর্তন করে এবং বাকী অংশগুলিকে নয় এবং এটি ২.৩ কল করে। সাইন করুন, আমি উত্তরটি আবার আপডেট করব, নোটের জন্য ধন্যবাদ!
Yuchen Zhong

6

আপনি এটিকে আপনার নতুন ফানক দিয়ে প্রবেশগুলি অটো-ফিক্স করতে ব্যবহার করতে পারেন

@available(*, deprecated, renamed: "myNewFunc")
func myOldFunc() {
   // ...
}

func myNewFunc() {
   // ...
}

* এর পরিবর্তে আপনি সুইফট সংস্করণ নম্বরটির জন্য সুইফ্ট ব্যবহার করতে পারেন।

অবহেলিত ফাংশনগুলি সতর্কতা উত্পন্ন করে তবে এখনও কল করা যেতে পারে। (সতর্কতা)

অপ্রচলিত ক্রিয়াকলাপগুলি পুরোপুরি ডাকা থেকে বিরত থাকে। (ত্রুটি)

@available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")

বা আইওএস, ম্যাকস, ওয়াচওএস, টিভিএস ইত্যাদি বিকল্প ব্যবহার করুন ...


1
@available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
func myFuncOld() {
    //
}

যদি deployment targetহয় 9.0এবং

1. <ObsoletedVersion>== 10.0-warning

এখানে চিত্র বর্ণনা লিখুন

2. <ObsoletedVersion>== 8.0-compile error

এখানে চিত্র বর্ণনা লিখুন


"অপ্রচলিত" বিকল্পের ক্ষেত্রে এটি ব্যবহার করতে পারবেন না। এই অনুযায়ী, বিকল্পটি কার্যকর করা হয় না। bugs.swift.org/browse/SR-8168
mkjwa
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.