2013-05-06 7 views
1

Я пытаюсь создать podspec для библиотеки, которая имеет исходный файл, который содержит TARGET_OS_IPHONE условное. В докладах пылеобразования ошибкиПодсчет linting не работает на 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' 

Вот 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" => "[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, так почему эта ошибка возникает и как ее исправить?

ответ

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' 

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