我正在尝试将CocoaLumberjack集成到现有项目中(这样我可以更好地登录报告了我无法复制的错误的客户计算机)。我已经成功构建了一个示例项目,并且可以在其中运行,但是在我自己的应用程序中似乎什么也没做。
我已将Lumberjack目录复制到我的项目目录中,并将其添加到项目中。我已将以下内容添加到“ Prefix.pch”文件中:
#import "DDLog.h"
#import "DDASLLogger.h"
#import "DDTTYLogger.h"
#import "DDFileLogger.h"
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
Run Code Online (Sandbox Code Playgroud)
我将以下内容放入 -applicationDidFinishLaunching:
[DDLog addLogger:[DDASLLogger sharedInstance]];
[DDLog addLogger:[DDTTYLogger sharedInstance]];
Run Code Online (Sandbox Code Playgroud)
最后我有以下内容 -awakeFromNib
NSLog(@"%@", @(ddLogLevel));
NSLog(@"%@", @(LOG_LEVEL_VERBOSE));
NSLog(@"%@", @"About to DDLog");
DDLogError(@"This is an error.");
DDLogWarn(@"This is a warning.");
DDLogInfo(@"This is just a message.");
DDLogVerbose(@"This is a verbose message.");
NSLog(@"%@", @"Done with DDLog");
Run Code Online (Sandbox Code Playgroud)
控制台显示:
2014-05-26 14:57:13.530 [21943:303] 31
2014-05-26 14:57:13.530 [21943:303] 31
2014-05-26 14:57:13.530 [21943:303] About to DDLog
2014-05-26 14:57:13.531 [21943:303] Done with DDLog …Run Code Online (Sandbox Code Playgroud) 当我跑步时xcodebuild,它会崩溃.它似乎没有编译测试目标的依赖,这是主要的应用程序.调用测试目标NiknikTests,同时调用app的目标WTATest3.
Ld build/UninstalledProducts/NiknikTests.xctest/NiknikTests normal i386
cd "/Users/ethen/.jenkins/workspace/Build NikNik"
export IPHONEOS_DEPLOYMENT_TARGET=7.1
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Users/ethen/Desktop/sbt/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk -L/Users/ethen/.jenkins/workspace/Build\ NikNik/build/Release-iphonesimulator -L/Users/ethen/.jenkins/workspace/Build\ NikNik/NiknikTests/TestLibraries/include/lib -F/Users/ethen/.jenkins/workspace/Build\ NikNik/build/Release-iphonesimulator -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Library/Frameworks -filelist /Users/ethen/.jenkins/workspace/Build\ NikNik/build/NikNik.build/Release-iphonesimulator/NiknikTests.build/Objects-normal/i386/NiknikTests.LinkFileList -bundle_loader /Users/ethen/.jenkins/workspace/Build\ NikNik/build/Release-iphonesimulator/Niknik.app/Niknik -Xlinker -objc_abi_version -Xlinker 2 -force_load /Users/ethen/.jenkins/workspace/Build\ NikNik/NiknikTests/TestLibraries/include/lib/libOCMock.a -ObjC -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=7.1 -framework UIKit -framework Foundation -Xlinker -dependency_info -Xlinker /Users/ethen/.jenkins/workspace/Build\ NikNik/build/NikNik.build/Release-iphonesimulator/NiknikTests.build/Objects-normal/i386/NiknikTests_dependency_info.dat -o /Users/ethen/.jenkins/workspace/Build\ NikNik/build/UninstalledProducts/NiknikTests.xctest/NiknikTests
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_NNBoundaryLineModel", referenced from:
objc-class-ref in NNBoundaryLineModelTests.o
(maybe you meant: _OBJC_CLASS_$_NNBoundaryLineModelTests)
"_OBJC_CLASS_$_NNConstant", referenced …Run Code Online (Sandbox Code Playgroud) 对于objective-c,我并没有真正了解Setters和Getters.有人能为初学者提供一个好的指南吗?我注意到这在尝试访问另一个类中的变量时发挥作用,我现在正尝试这样做.我有两个类,比如A和B.我在A中有一个带有@property(retain)NSString*变量的NSString变量.然后我继续合成它.现在,当视图在类中加载时,我将变量的值设置为"hello".现在我想要做的是从类B中访问字符串.我已经导入了类A,并使用以下代码对其进行了初始化:
AClass *class = [[AClass alloc] init];
NSLog(@"Value:%@", class.variable);
[class release];
Run Code Online (Sandbox Code Playgroud)
但是在调试器中它返回一个值"(null)",我真的不明白.如果有人能带领我走上正确的道路,我将非常感激.
谢谢,
凯文
虽然我似乎能够在我的视图控制器中设置dataSource一个UICollectionView正常的:
- (void)setupCollectionView:(UICollectionView*)collectionView {
CustomCollectionViewDataSource *dataSource = [[CustomCollectionViewDataSource alloc] initWithCollectionView: collectionView];
[collectionView setDataSource: dataSource];
[collectionView setDelegate: self];
[collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:kNNReuseIdentifier];
}
Run Code Online (Sandbox Code Playgroud)
当我记录collectionView,dataSource和collectionView.dataSource,它们看起来都像它们应该的那样.我的集合视图中只有一个部分,所以我没有numberOfSectionsInCollectionView在我的数据源中实现.
一旦我的集合视图加载,我就会让应用程序崩溃.在有或没有断点异常的情况下,没有相关的崩溃日志.当异常断点打开时,它不会指向我的代码导致问题的位置.崩溃后,我的堆栈看起来像这样:
* thread #1: tid = 0x22cc82, 0x01611411 CoreFoundation`___forwarding___ + 769, queue = 'com.apple.main-thread', stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
* frame #0: 0x01611411 CoreFoundation`___forwarding___ + 769
frame #1: 0x016110ee CoreFoundation`__forwarding_prep_0___ + 14
frame #2: 0x00b0bc34 UIKit`-[UICollectionViewData _updateItemCounts] + 331
frame #3: 0x00b0bce1 UIKit`-[UICollectionViewData _validateItemCounts] …Run Code Online (Sandbox Code Playgroud) 我正在将使用Lumberjack Logging的Objective-C文件转换为Swift.它似乎主要是工作,除了我声明的部分ddloglevel.
Objective-C方法:
#ifdef DEBUG
static const int ddLogLevel = LOG_LEVEL_INFO;
#else
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
#endif
Run Code Online (Sandbox Code Playgroud)
Swift方式:
#if DEBUG
let ddLogLevel = LOG_LEVEL_INFO;
#else
let ddLogLevel = LOG_LEVEL_VERBOSE;
#endif
Run Code Online (Sandbox Code Playgroud)
除了我这个编译时错误: Use of unresolved identifier 'LOG_LEVEL_INFO'
为什么会这样?我该如何解决?
我正在转换图像大小,然后我将新文件保存到原始图像文件所在的同一目录中.
我只能设置"images"目录的权限.如果我的应用程序需要选择该目录中的图像,它将按预期工作.如果我选择另一个目录中的图像(例如用户创建的目录文件夹),则不会显示新图像.我在App Sandbox中看到的只是"用户选择的文件"目录,"图像"目录,"下载"目录,"图片"目录,"音乐"目录和"电影"目录.
有没有办法以编程方式提供此权限?
cocoa ×2
lumberjack ×2
getter ×1
ios ×1
iphone ×1
objective-c ×1
sandbox ×1
setter ×1
swift ×1
target ×1
xcodebuild ×1