我有一个运行的Perl进程被卡住,我想用调试器戳到里面看看有什么问题.我无法重启这个过程.我可以将调试器附加到正在运行的进程吗?我知道我能做到gdb -p,但gdb对我没有帮助.我试过Enbugger,但失败了:
$ perl -e 'while (1) {}'&
[1] 86836
$ gdb -p 86836
…
Attaching to process 86836.
Reading symbols for shared libraries . done
Reading symbols for shared libraries ............................. done
Reading symbols for shared libraries + done
0x000000010c1694c6 in Perl_pp_stub ()
(gdb) call (void*)Perl_eval_pv("require Enbugger;Enbugger->stop;",0)
perl(86836) malloc: *** error for object 0x3: pointer being realloc'd was not allocated
*** set a breakpoint in malloc_error_break to debug
Program received signal SIGABRT, Aborted. …Run Code Online (Sandbox Code Playgroud) Mac Developer和3rd Party Mac Developer Application配置文件有Code Signing Identity什么区别?哪一个用于Mac App Store分发?

我想创建一个函数,返回符合协议的对象,但协议使用a typealias.鉴于以下玩具示例:
protocol HasAwesomeness {
typealias ReturnType
func hasAwesomeness() -> ReturnType
}
extension String: HasAwesomeness {
func hasAwesomeness() -> String {
return "Sure Does!"
}
}
extension Int: HasAwesomeness {
func hasAwesomeness() -> Bool {
return false
}
}
Run Code Online (Sandbox Code Playgroud)
String并且Int已经扩展为符合HasAwesomeness,并且每个都实现了hasAwesomeness()返回不同类型的方法.
现在我想创建一个返回符合HasAwesomeness协议的对象的类.我不在乎班级是什么,只是我可以发送信息hasAwesomenss().当我尝试以下操作时,我生成了一个编译错误:
class AmazingClass: NSObject {
func returnsSomethingWithAwesomeness(key: String) -> HasAwesomeness {
...
}
}
Run Code Online (Sandbox Code Playgroud)
错误:协议'HasAwesomeness'只能用作通用约束,因为它具有Self或相关类型要求
可以想象,目的returnsSomethingWithAwesomeness是返回一个String或者Int基于ok key参数.编译器抛出的错误有点 - sorta是有道理的,为什么它被禁止,但它确实提供了修复语法的洞察力.
func …Run Code Online (Sandbox Code Playgroud) 我有一个性能密集的iPhone游戏,我想添加声音.似乎有三个主要选择:(1)AVAudioPlayer,(2)音频队列和(3)OpenAL.我讨厌编写低级代码页面来播放样本,所以我想使用它AVAudioPlayer.问题是它似乎杀死了性能 - 我做了一个简单的测量使用CFAbsoluteTimeGetCurrent,play消息似乎需要9到30毫秒才能完成.考虑到25毫秒== 40 fps,这非常悲惨.
当然有一种prepareToPlay方法可以加快速度.这就是为什么我写了一个简单的类,它可以保留几个AVAudioPlayers,预先准备它们然后使用准备好的播放器播放样本.没有雪茄,仍然需要上面提到的约20毫秒.
这样的性能对于游戏来说是无法使用的,那么你在iPhone上使用什么来播放声音效果不错的声音呢?我做错了AVAudioPlayer吗?你用音频队列播放声音吗?(在2.2出现之前,我写了一些类似于AVAudioPlayer的内容,我很乐意放弃这种体验.)你使用OpenAL吗?如果是,是否有一种简单的方法可以使用OpenAL播放声音,还是必须编写代码页?
更新:是的,使用OpenAL播放声音非常简单.
我希望另一个开发人员运行我编写的Perl脚本.该脚本使用许多必须在脚本运行之前安装的CPAN模块.是否可以使脚本(或perl二进制文件)转储所有缺少的模块的列表?当我尝试运行脚本时,Perl会打印出缺少的模块的名称,但这很详细,并且不会立即列出所有缺少的模块.我想做点什么:
$ cpan -i `said-script --list-deps`
Run Code Online (Sandbox Code Playgroud)
甚至:
$ list-deps said-script > required-modules # on my machine
$ cpan -i `cat required-modules` # on his machine
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法吗?这不是一个显示阻止,但我想让其他开发人员的生活更轻松.(所需的模块分散在几个文件中,因此我不容易手工制作列表而不会遗漏任何内容.我知道PAR,但对于我想要的东西来说似乎有点太复杂了.)
更新:谢谢,曼尼,这样做.我不知道%INC,我只知道@INC.我解决了这样的事情:
print join("\n", map { s|/|::|g; s|\.pm$||; $_ } keys %INC);
Run Code Online (Sandbox Code Playgroud)
打印出来:
Moose::Meta::TypeConstraint::Registry
Moose::Meta::Role::Application::ToClass
Class::C3
List::Util
Imager::Color
…
Run Code Online (Sandbox Code Playgroud)
看起来这样可行.
我想将当前的Subversion修订版号(如报告所示svnversion)插入到我的Xcode项目中.我设法插入的版本号进入Info.plist的$PROJECT_DIR,但是这不是一个好的解决方案,因为该文件版本.我试图将修订版插入到Info.plistbuild目录中,但是在代码签名阶段我遇到了一个错误(这是一个iPhone应用程序).
是否有一种简单的方法可以使用某些构建文件将修订号输入应用程序,以便更改版本不会更改版本化文件?我想也许我可以创建一个临时源文件,该文件将与其他文件链接并提供获取修订号的功能.但我不知道该怎么做.
我对其他解决方案不太感兴趣,即.这个agvtool.我想要的只是应用程序可用的修订版号,没有太大的魔力.
以下代码在iOS <7.0中可以正常工作.在iOS 7中,当UITextView正在更新时,滚动将变得不稳定且不稳定.我不确定这是否是iOS 7中的错误,或者我做错了什么.
TestController.h
//TODO: Add UITextView in storyboard and tie to textView outlet
#define MAX_TEXT_VIEW_CHARACTERS 1000
@interface TestController : UIViewController {
NSMutableString *_outputText;
NSTimer *_outputTimer;
}
@property (strong, nonatomic) IBOutlet UITextView *textView;
@end
Run Code Online (Sandbox Code Playgroud)
TestController.m
@implementation TestController
@synthesize textView;
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
_outputText = [NSMutableString stringWithCapacity:MAX_TEXT_VIEW_CHARACTERS];
_outputTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(outputLine:) userInfo:nil repeats:YES];
}
-(void)outputLine:(NSTimer *) theTimer {
static int i = 0;
//Run this 100 times
if (i > 99) {
[_outputTimer invalidate];
return;
} …Run Code Online (Sandbox Code Playgroud) 当我尝试使用Cocoa运行JavaScript时,我收到警告:
warning: no rule to process file '$(PROJECT_DIR)/myJavaScriptFile.js' of type sourcecode.javascript for architecture armv7
Run Code Online (Sandbox Code Playgroud) 我有一个非ARC项目,它使用支持ARC的静态库.这是一个受支持的方案,所以一切正常.也就是说,直到我在4.x设备上运行代码,包括模拟器.在这种情况下,代码会出现以下链接器错误:
dyld: lazy symbol binding failed: Symbol not found: _objc_storeStrong
Referenced from: /Users/zoul/Library/Application Support/iPhone Simulator/4.3.2/Applications/…/Demo.app/Demo
Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation
Run Code Online (Sandbox Code Playgroud)
只要某些启用ARC的代码尝试调用_objc_storeStrong函数,就会发生这种情况,就像在initmethod(self = [super init])中一样.将主项目转换为ARC可以解决问题,但我想知道是否还有其他解决方案.
xcode ×4
objective-c ×2
perl ×2
audio ×1
cocoa ×1
cpan ×1
debugging ×1
dependencies ×1
finch ×1
gdb ×1
generics ×1
ios ×1
ios7 ×1
iphone ×1
javascript ×1
macos ×1
module ×1
performance ×1
protocols ×1
svn ×1
swift ×1
type-alias ×1
uiscrollview ×1
uitextview ×1