我正在尝试追踪沙盒创建过程中出现的一些问题.在多种情况下,似乎未在Data/Library/Preferences中创建NSUserDefaults .plist文件.我在调试器中以及从Applications目录启动应用程序时已经看到了这一点.我没有尝试存档,签署应用程序然后启动.这需要吗?
创建以.LSSharedFileList.plist结尾的别名文件,但它指向自身,因此不存在.
我不知道它是否相关但是控制台报告:
appleeventsd[72]: <rdar://problem/11489077> A sandboxed application with pid ... checked in with appleeventsd, but its code signature could not be validated ( either because it was corrupt, or could not be read by appleeventsd ) and so it cannot receive AppleEvents targeted by name, bundle id, or signature. Error=ERROR: #100013 { "NSDescription"="SecCodeCopySigningInformation() returned 100013, -." } (handleMessage()/appleEventsD.cp #2072) client-reqs-q
Run Code Online (Sandbox Code Playgroud)
谢谢.
我在争论是否要转向基于GCD的多线程访问器模式.多年来我一直在访问器中使用基于锁的自定义同步,但我发现了一些信息(GCD简介),并且似乎有基于GCD的方法的优点.我希望在这里开始一个对话,以帮助自己和其他人权衡决定.
模式看起来像:
- (id)something
{
__block id localSomething;
dispatch_sync(queue, ^{
localSomething = [something retain];
});
return [localSomething autorelease];
}
- (void)setSomething:(id)newSomething
{
dispatch_async(queue, ^{
if(newSomething != something)
{
[something release];
something = [newSomething retain];
[self updateSomethingCaches];
}
});
}
Run Code Online (Sandbox Code Playgroud)
在专业方面:您可以获得非阻塞写访问的好处; 比锁更低的开销(可能?); 从关键代码部分返回之前忘记解锁的安全性; 其他?
缺点:异常处理不存在,因此您必须将其编码到您可能需要它的每个块中.
这种模式是否可能是编写多线程访问器的推荐方法?
是否有为此目的创建调度队列的标准方法?换句话说,用于权衡粒度的最佳实践?例如,使用锁定,锁定每个属性比锁定整个对象更精细.使用调度队列,我可以想象为所有对象创建单个队列会产生性能瓶颈,因此每个对象队列是否合适?显然,答案很大程度上取决于具体的应用,但是有一些已知的性能权衡来帮助衡量该方法的可行性.
任何信息/见解将不胜感激.
我试图在旧系统上支持10.9中新添加的NSColor方法.10.9之前我在一个类别中有这些允许我统一Mac和iOS之间的代码.现在10.9有这些方法,无论我在哪里使用它,我都会得到奇怪的绘图.我想动态地将这些方法添加到较旧的运行时,并且我已经找到了几个使用class_addMethod来完成它的参考.问题是,即使addMethod返回成功,也不会调用这些方法.
NSColor *
fColorWithWhite(id self, SEL _cmd, float white, float alpha) {
return [NSColor colorWithDeviceWhite: white
alpha: alpha];
}
NSColor *
fColorWithRedGreenBlue(id self, SEL _cmd, float red, float green, float blue, float alpha) {
return [NSColor colorWithDeviceRed: red
green: green
blue: blue
alpha: alpha];
}
+ (void)addLegacySupport {
Class class = NSClassFromString(@"NSColor");
BOOL success = class_addMethod(class, @selector(colorWithWhite:alpha:), (IMP)fColorWithWhite, "@@:ff");
NSLog(@"colorWithWhite:alpha: - %i", success);
success = class_addMethod(class, @selector(colorWithRed:green:blue:alpha:), (IMP)fColorWithRedGreenBlue, "@@:ffff");
NSLog(@"colorWithRed:green:blue:alpha: - %i", success);
}
Run Code Online (Sandbox Code Playgroud)
任何指针都将非常感激.
我刚刚遇到了一个非常奇怪的场景,在其他地方找不到任何相关信息。当 Xcode 在我的断点处中断时,整个系统的所有键盘输入都没有响应。我可以切换到另一个应用程序,但没有记录任何击键。Xcode 本身对键盘输入没有响应。
还有其他人看过这个吗?
我正在运行 10.10.1 和 Xcode 6.1。
我一直在寻找答案,似乎无法找到它.我将PUSH通知发送到我的应用程序的多种风格.我之前已将其设置为遍历每个证书并将其与用户应用类型进行匹配.实际上,我为每个证书创建一个新的SSL连接,然后发送该特定证书的任何通知.
转换所有这些证书并在它们到期时安装它们有点乏味.我可以将KeyChain访问中的多个证书作为单个p12文件导出并进行转换,这有助于从证书管理角度更加简单.问题在于没有收到我的PUSH通知.我可以成功连接到APNS,反馈服务没有报告任何问题,但似乎没有任何问题.这使我相信APNS正在验证文件中唯一的第一个证书,并忽略任何其他允许成功连接但可能阻止传递通知的证书.在这种情况下,我会期望连接断开或反馈服务上报告的内容,但到目前为止我都没见过.
有没有人对成功做到这一点有任何见解?谢谢.
我正在尝试使用以下代码动态更新UITextView的高度,但结果始终被几个像素关闭,导致文本视图换行但不适当地调整大小.输入另一个字符(或两个)后,显示屏会相应更新.
我查看了各种帖子(很多都是过时的,因为它们引用了弃用的sizeThatFits),我没有看到任何不同.那些使用boundingRectWithSize :( NSString或NSAttributedString - 我已尝试过两者)看起来如下所示:
CGRect boundingRect = [string boundingRectWithSize: CGSizeMake(CGRectGetWidth(textView.frame), CGFLOAT_MAX)
options: NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
attributes: @{
NSFontAttributeName : textView.font
}
context: NULL];
float h = ceil(CGRectGetHeight(boundingRect));
textViewHeightLayoutConstraint.constant = h;
Run Code Online (Sandbox Code Playgroud)
我知道你要说的第一件事是:内插.这是我的设置代码:
textView.textContainerInset = UIEdgeInsetsZero;
textView.contentInset = UIEdgeInsetsZero;
textView.layoutMargins = UIEdgeInsetsZero;
Run Code Online (Sandbox Code Playgroud)
还有其他插图设置吗?
旁注:我正在使用MuseoSans作为字体.
黑客解决方案
我通过检查宽度是否在一个阈值(当前是测试的9px)之内"修复"了这个问题,如果是,假装添加了一条额外的行,如下所示:
float fontHeight = ceil([@"lp" sizeWithAttributes: @{
NSFontAttributeName : textView.font
}].height);
if ((CGRectGetWidth(textView.frame) - ceil(CGRectGetWidth(boundingRect))) <= 9.f)
h += fontHeight;
Run Code Online (Sandbox Code Playgroud)
上面允许我捕捉最大可能的高度,然后在我的文本视图上强制它的高度.文本视图确实适当地换行并在下一行显示文本.
想法?
小更新
添加此项无效:
NSMutableParagraphStyle *paragraphStyle = [NSParagraphStyle.defaultParagraphStyle mutableCopy];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
CGRect boundingRect = …Run Code Online (Sandbox Code Playgroud) 我正在使用弱对象NSHashTable报告计数为1,即使它是空的.以下是lldb输出显示我的情况.
p [__operationWaitList count]
(NSUInteger) $4 = 1
p [__operationWaitList.allObjects count]
(NSUInteger) $7 = 0
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是count计算存储在NSHashTable中的弱引用的数量,而不是有效对象的数量.通过调用allObjects然而,我正在取消引用没有有效对象的指针,因此生成的对象数组为空.
我想确认这一点,因为文档在这一点上有点缺乏.
我正在尝试调试崩溃(可能与内存有关),但每当应用程序在iPad设备上进行调试时崩溃Xcode(4.2)显示Paused没有任何线程(GDB)的回溯.切换到LLDB提供更少 - 应用程序崩溃,控制台显示任何内容,Xcode结束调试.
崩溃仅在激烈使用后发生,并且可能与内存不足有关.
我找不到任何与坠机相关的信息.有人遇到过这种行为吗?
Keychain Services API的文档有点不尽如人意.我似乎无法找到的一件事是访问安全备注的详细信息,Keychain Access应用程序允许您添加和编辑.
任何见解都会非常感激.谢谢.
macos ×4
cocoa ×3
ios ×3
objective-c ×3
autolayout ×1
breakpoints ×1
iphone ×1
keychain ×1
locking ×1
nshashtable ×1
push ×1
sandbox ×1
uitextview ×1
xcode ×1
xcode4.2 ×1