Podspec linting在TARGET_OS_IPHONE条件下失败

时间:2013-05-06 20:41:27

标签: ios objective-c lint cocoapods targeting

我正在尝试为包含TARGET_OS_IPHONE条件的源文件的库创建podspec。 linting报告错误

YapDatabase (1.2.1)
    - ERROR | [OSX] [xcodebuild]  
YapDatabase/YapDatabase/Abstract/YapAbstractDatabaseConnection.m:78:8: 
error: property 'autoFlushMemoryLevel' not found on object of type 
'YapAbstractDatabaseConnection *'
    - ERROR | [OSX] [xcodebuild]  
YapDatabase/YapDatabase/Abstract/YapAbstractDatabaseConnection.m:398:30: error: 
no visible @interface for 'YapAbstractDatabaseConnection' declares the selector 
'autoFlushMemoryLevel'

这是podspec:

Pod::Spec.new do |s|
  s.name         = "YapDatabase"
  s.version      = "1.2.1"
  s.summary      = "A key/value store built atop sqlite for iOS & Mac."

  s.homepage     = "https://github.com/yaptv/YapDatabase"



  s.license      = 'MIT'



  s.author       = { "yaptv" => "yaptv@yaptv.com" }

  s.source       = { :git => "https://github.com/yaptv/YapDatabase.git", :tag => "1.2.1" }



  s.ios.deployment_target = '6.0'
  s.osx.deployment_target = '10.75'


  s.source_files = 'YapDatabase/**/*.{h,m}','Vendor/**/*.{h,m}'
  s.exclude_files = 'YapDatabase/Testing'


  s.public_header_files = 'YapDatabase/Key_Value/YapDatabase.h'


  s.requires_arc = true


end

,这是源代码中显然导致错误的行:

#if TARGET_OS_IPHONE
/**
 * When a UIApplicationDidReceiveMemoryWarningNotification is received,
 * the code automatically invokes flushMemoryWithLevel and passes this set level.
 * 
 * The default value is YapDatabaseConnectionFlushMemoryLevelMild.
 * 
 * @see flushMemoryWithLevel:
**/
@property (atomic, assign, readwrite) int autoFlushMemoryLevel;
#endif

我正在使用Cocoapods v.0.19.1,为什么会抛出此错误以及如何解决?

1 个答案:

答案 0 :(得分:0)

看起来您正在OS X上导入尝试使用该属性的文件。具体来说是YapDatabase/YapDatabase/Abstract/YapAbstractDatabaseConnection.m。由于此属性未在OS X上声明,因此无法找到它。这解释了错误:

no visible @interface for 'YapAbstractDatabaseConnection' declares the selector 'autoFlushMemoryLevel'

在线上它也显示在错误中:

ERROR | [OSX] [xcodebuild]  YapDatabase/YapDatabase/Abstract/YapAbstractDatabaseConnection.m:78:8:
ERROR | [OSX] [xcodebuild]  YapDatabase/YapDatabase/Abstract/YapAbstractDatabaseConnection.m:398:30

要解决此问题,您需要查看exclude_files,您可以使用以下内容来使用平台:

s.osx.exclude_files = 'path/to/files'

虽然只是排除这个单个文件可能不起作用,因为其他文件也可能需要这个。这实际上取决于您的代码的设置方式。