Сбой проверки Podspec на TARGET_OS_IPHONE условно

Я пытаюсь создать podspec для библиотеки с исходным файлом, содержащим условие TARGET_OS_IPHONE. Линтинг сообщает об ошибках

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'

Вот подспец:

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" => "[email protected]" }

  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, так почему же выдается эта ошибка и как ее исправить?


person zakdances    schedule 06.05.2013    source источник


Ответы (1)


Похоже, вы импортируете файл в 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'

Хотя простое исключение этого единственного файла может не сработать, так как это может понадобиться и другим файлам. Это действительно зависит от того, как настроен ваш код.

person Keith Smiley    schedule 07.05.2013