MLeaksFinder icon indicating copy to clipboard operation
MLeaksFinder copied to clipboard

Cannot initialize a parameter of type 'id<NSCopying> _Nonnull' with an rvalue of type 'Class'

Open xygkevin opened this issue 3 years ago • 3 comments

Cannot initialize a parameter of type 'id<NSCopying> _Nonnull' with an rvalue of type 'Class'

xygkevin avatar Jun 17 '21 04:06 xygkevin

可以这样改 layoutCache[(id<NSCopying>)currentClass] = ivars;

JQHxx avatar Jul 02 '21 07:07 JQHxx

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
      ## Fix for XCode 12.5
      find_and_replace("Pods/FBRetainCycleDetector/FBRetainCycleDetector/Layout/Classes/FBClassStrongLayout.mm",
                       "layoutCache[currentClass] = ivars;", "layoutCache[(id<NSCopying>)currentClass] = ivars;")
    end
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 11.0
                config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
            end
        end
    end
end


def find_and_replace(dir, findstr, replacestr)
  Dir[dir].each do |name|
      text = File.read(name)
      replace = text.gsub(findstr,replacestr)
      if text != replace
          puts "Fix: " + name
          File.open(name, "w") { |file| file.puts replace }
          STDOUT.flush
      end
  end
  Dir[dir + '*/'].each(&method(:find_and_replace))
end

QiuYeHong90 avatar Aug 27 '21 09:08 QiuYeHong90

fixed by add to the end of the pod file:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
      find_and_replace("Pods/FBRetainCycleDetector/FBRetainCycleDetector/Layout/Classes/FBClassStrongLayout.mm",
                       "layoutCache[currentClass] = ivars;", "layoutCache[(id<NSCopying>)currentClass] = ivars;")
                       find_and_replace("Pods/FBRetainCycleDetector/fishhook/fishhook.c",
                                        "indirect_symbol_bindings[i] = cur->rebindings[j].replacement;", "if (i < (sizeof(indirect_symbol_bindings) / sizeof(indirect_symbol_bindings[0]))){\
                                        indirect_symbol_bindings[i] = cur -> rebindings[j].replacement;\
                                        }")

    end
  end
end

def find_and_replace(dir, findstr, replacestr)
  Dir[dir].each do |name|
      text = File.read(name)
      replace = text.gsub(findstr,replacestr)
      if text != replace
          puts "Fix: " + name
          File.open(name, "w") { |file| file.puts replace }
          STDOUT.flush
      end
  end
  Dir[dir + '*/'].each(&method(:find_and_replace))
end

lexuanquynh avatar Nov 27 '23 04:11 lexuanquynh