এক্সকোডে একটি ক্লাসের নাম পরিবর্তন করুন: রিফ্যাক্টর… গ্রে গ্রেড (অক্ষম)) কেন?


112

এক্সকোডে রিফ্যাক্টর ... গ্রে গ্রেড (অক্ষম) কেন ?

আমি একটি ক্লাসের নাম পরিবর্তন করতে চাই।

উত্তর:


181

শ্রেণীর প্রতীকটি তার শিরোনাম ফাইলটিতে নির্বাচন করুন - অর্থাত্‍ এর ঠিক পরে @interface। তারপরে রিফ্যাক্টরিং সামগ্রী সক্ষম করা উচিত।


আমার শ্রেণীর শিরোনাম ফাইলটিতে কেবল @ অভ্যন্তরীণ পৃষ্ঠ রয়েছে, কোনও ক্লাস নেই। তবে @ ইন্টারফেসের পরে প্রতীকটি নির্বাচন করা কার্যকর বলে মনে হচ্ছে।
ইলিয়ট

3
ফরোয়ার্ড ঘোষণার জন্য ক্লাস করুন ... এর
জোনাথন স্টার্লিং

এটি বেশ কিছুদিন ধরে আমাকেও বিরক্ত করছে। ধন্যবাদ!
জোনাটান হেডবার্গ

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

@ করিম - এটি কখনই এক্সকোডে কাজ করেনি, প্রতিবারের মতো কাজ করার জন্য নীচে আমার উত্তরটি দেখুন
অ্যাডাম

26

আপনি যদি অবজেক্টিভ-সি ++ ব্যবহার করেন (অর্থাত সি ++ কোডের সাথে অবজেক্টিভ-সি মিশ্রণ করুন) তবে এক্সকোডে রিফ্যাক্টরিং অক্ষম করা হয়েছে কারণ এটি সি ++ কোডের রিফ্যাক্টরিং সমর্থন করে না।


খুব দু: খজনক, প্রায় ২ বছর পরে এবং এটি এখনও অবজেক্টর-সি অবজেক্টগুলিকে রিফেক্টর করে না।
ক্রিস্টোফেরকটন

@ ক্রিস্টোফেরকটন প্রায় 8 বছর পরে চেষ্টা করুন, এবং এটি এখনও কার্যকর হয় না।
অ্যালেক্স

7

ক্ষতিগ্রস্থ ফাইলগুলি (সম্ভবত এটিতে আপনার শ্রেণীর ফাইল রয়েছে) সংরক্ষণ না করা হলে রিফ্যাক্টর অক্ষমও হতে পারে।


1
ইন্টারফেস বিল্ডারে একটি এক্সিব ফাইল সংরক্ষণ করা আমার জন্য পুনরায় সক্রিয় রিফ্যাক্টরিং, এমনকি যখন এক্সকোড পুনরায় চালু করা সাহায্য করছিল না, ধন্যবাদ!
ভিনসেন্ট গ্যাবল

1
এই জন্য +1। এক্সকোডের কয়েকটি কোণে এখনও মোটামুটি অঞ্চল রয়েছে এবং এটি তাদের মধ্যে একটি। কখনও কখনও যদি সংরক্ষণ রিফ্যাক্টরিং সক্ষম না করে তবে পুনর্নির্মাণের ইচ্ছা।
স্মরণে

6

আমি এখন থেকে 5 বছর ধরে এক্সকোড ব্যবহার করছি, এবং রিফ্যাক্টরিং কখনই সঠিকভাবে কাজ করে নি (এমনকি এক্সকোড 4.6 এ বড় বড় বাগ রয়েছে যেখানে এটি আপনার উত্স কোডটি দূষিত করবে!)

কর্মক্ষেত্রটি সর্বদা ছিল (এখনও অ্যাপল এর কোড ব্যর্থ হয় এমন ক্ষেত্রে এমনকি 100% কাজ করে)

  1. ফাইলের সমস্ত ব্যবহার সন্ধান করতে শিফট-কমান্ড-এফ ব্যবহার করুন
  2. অনুসন্ধান সেটিংসে "প্রতিস্থাপন" নির্বাচন করুন
  3. "সমস্ত প্রতিস্থাপন"
  4. .h ফাইলের জন্য নিম্নলিখিতগুলি করুন এবং .m ফাইলের জন্য এটি পুনরায় করুন (যদি আপনার কাছে থাকে):
    1. আসল ফাইলটিতে ডান ক্লিক করুন, এবং "ফাইন্ডারে দেখান" নির্বাচন করুন
    2. এক্সকোড থেকে ফাইলটি মুছুন (জিজ্ঞাসা করা হলে কেবল "উল্লেখগুলি মুছুন" নির্বাচন করুন)
  5. ফাইন্ডারে .h (এবং। মি। আপনার একটি থাকলে) নাম পরিবর্তন করুন
  6. এক্সকোডে "পণ্য -> (আল্ট চেপে ধরে রাখুন) -> ক্লিন বিল্ড ফোল্ডার" নির্বাচন করুন
  7. এক্সকোডটি প্রস্থান করুন (আপনি সাধারণত এটি না করেই পালিয়ে যেতে পারেন - তবে দ্রষ্টব্য: এক্সকোডে আরও কিছু মেজর বাগ রয়েছে যেখানে এটি না করলে এটি নিজেই ক্র্যাশ হয়ে যায়)
  8. এক্সকোড পুনরায় খুলুন
  9. .h এবং .m কে Xcode এ টেনে আনুন / ছেড়ে দিন
  10. কয়েক সেকেন্ড অপেক্ষা করুন (এক্সকোডের কয়েকটি মূল পদ্ধতি অ্যাসিনক্রোনাস - এটি আপনার প্রকল্পকে দূষিত করার অনুমতি দেয়)
  11. অবশেষে, যখন মনে হচ্ছে এটি কিছুই করছে না (এবং আপনার হার্ড ডিস্কটি আর কোনও শব্দ করছে না): পুনর্নির্মাণের জন্য cmd-b

আমার এই পদ্ধতিতে 100% সাফল্যের হার রয়েছে। আমি স্রেফ সর্বশেষ এক্সকোডে অ্যাপলের "রিফ্যাক্টর -> পুনর্নামকরণ" দিয়ে রিফ্যাক্টরিংয়ের চেষ্টা করেছি এবং এটি ব্যর্থ হয়েছে - আবার!

(এই বারে ভুল ত্রুটির সাথে: "অ্যাপল ভুল পাঠ্যকে যেখানে জায়গায় রেখেছিল সেখানে একটি ত্রুটি বার্তা," এর ভাষা নির্ধারণ করতে অক্ষম)


হ্যাঁ, আমি সম্প্রতি এটি চেষ্টা করেছি (মে 2014) এবং এক্সকোড অফিসিয়াল "রিফ্যাক্টর" মেনুওপশনটি এখনও ভাঙা আছে, এটি এখনও আপনার উত্স কোডটিকে দূষিত করে। আমি অবাক হয়েছি যে অ্যাপল কর্মীরা এগুলি নিয়ে বিরক্ত হন না।
অ্যাডাম 21

3

আমি আমার প্রোজেক্টারে ফাইন্ডারে যাচ্ছি, তারপরে তথ্য পেয়ে ফাইলের নাম পরিবর্তন করুন ।

এর পরে, এক্সকোডে -> প্রকল্প নেভিগেটরে আমি ফাইলগুলি মুছি

শেষে, আমি ক্লাসের ডানদিকে ক্লিক করি এবং এতে ফাইল যুক্ত করি ... এবং এই ফাইলগুলি আবার যুক্ত করুন।

এটা আমার জন্য কাজ করেছে।


2

আমার জন্য আমি বুঝতে পেরেছিলাম যে রিফ্যাক্টর অক্ষম ছিল কারণ আমি খোলা এক্সকোড প্রকল্পটি একটি বেস এসডিকে অনুপস্থিত ছিল যা অনুপস্থিত ছিল। প্রোজেক্ট সেটিংস সম্পাদনা করুন এবং বিল্ড ট্যাবে আপনার বেস বেসটিকে এসডিকে সেট করুন (আমার কাছে এটি আইওএস ৪.২ ছিল)। এটি আমার পক্ষে সক্ষম রেফ্যাক্টর।


1

এছাড়াও, আপনি ক্লাসের জন্য ফাইলের নামটি এক্সকোডের বাইরে অথবা সিটিআরএল ক্লিক করে ফাইলটির নাম পরিবর্তন করে নাম পরিবর্তন করে রেখেছিলেন। ক্লাস নামের সাথে যদি ফাইলের নাম মেলে না তবে এক্সকোড রিফ্যাক্টর করতে অস্বীকার করে।


1

আপনার ক্লাসের শিরোলেখ ফাইলটিতে যান এবং এর অনুরূপ লাইনটি সন্ধান করুন:

@interface YourClassName

শ্রেণীর প্রতীকটিতে ডান ক্লিক করুন (যেমন আপনার ক্লাসনাম) এবং আপনার রিফ্যাক্টর -> নাম পরিবর্তন করুন ...

আমি এটি চেষ্টা করেছি এবং এটি এক্সকোড 5 এ কাজ করে।


0

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

এখনও কিছুটা বগি লাগছে।

বিটিডাব্লু, এটি এক্সকোড ৪.০.১ এর জন্য ছিল


-1

রিফ্যাক্টরিং কাজ করে যদি আপনি প্রথমে প্রকল্প নেভিগেটরে ফাইলের নাম পরিবর্তন করেন।

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