我正在尝试为包含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,为什么会抛出此错误以及如何解决?
答案 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'
虽然只是排除这个单个文件可能不起作用,因为其他文件也可能需要这个。这实际上取决于您的代码的设置方式。