Mac OS X存储一些带有资源分叉的文件.我需要使用资源分支创建一个文件.麻烦的是,我需要在命令行上创建这个文件.是否有人知道如何在Mac OS X的命令行中使用资源表单创建文件?
大家好.我一直在阅读Apple关于何时/何地/如何使用NSError与@ try/@ catch/@的建议.从本质上讲,我的印象是Apple认为最好避免使用异常处理语言结构,除非作为在意外错误情况下暂停程序执行的机制(也许有人可以举例说明这种情况?)
我来自Java,当有人想要处理错误时,会有例外.不可否认,我仍然在Java思想空间,但我正在慢慢掌握NSError所提供的所有内容.
我挂断的一件事是在发生错误时清理内存的任务.在许多情况下(例如使用C,C++库,CoreFoundation等),您需要在由于错误而导致函数中断之前进行大量内存清理.
这是我煮熟的一个例子,它准确地反映了我遇到过的情况.使用一些虚构的数据结构,该函数打开一个文件句柄并创建一个"MyFileRefInfo"对象,其中包含有关如何处理该文件的信息.在关闭文件句柄并释放struct的内存之前,对文件执行了一些操作.使用Apple的建议我有这个方法:
- (BOOL)doSomeThingsWithFile:(NSURL *)filePath error:(NSError **)error
{
MyFileReference inFile; // Lets say this is a CF struct that opens a file reference
MyFileRefInfo *fileInfo = new MyFileRefInfo(...some init parameters...);
OSStatus err = OpenFileReference((CFURLRef)filePath ,&inFile);
if(err != NoErr)
{
*error = [NSError errorWithDomain:@"myDomain" code:99 userInfo:nil];
delete fileInfo;
return NO;
}
err = DoSomeStuffWithTheFileAndInfo(inFile,fileInfo);
if(err != NoErr)
{
*error = [NSError errorWithDomain:@"myDomain" code:100 userInfo:nil];
CloseFileHandle(inFile); // if we don't do this bad things happen
delete fileInfo;
return …Run Code Online (Sandbox Code Playgroud) error-handling cocoa memory-management objective-c try-catch-finally
我怎么能让它NSWindow的标题栏看起来像Mac App Store或应用程序Feedder的高度增加,其他控件显示在其中.
要了解我的意思,请查看Mac App Store的网站:http://www.apple.com/mac/app-store/.
它是一个自定义NSWindow还是一个完全无边框的窗口,NSView看起来像标题栏?
是否有可能在iPhone上制作一个50MB的大数据库?这样可以通过智能方式快速搜索到它?有SQlite?
在你的一个Objective-C课程中实现+ initialize或+ load方法时,你应该始终从这种防守开始吗?:
@implementation MyClass
+ (void)initialize {
if (self == [MyClass class]) {
...
}
}
...
@end
Run Code Online (Sandbox Code Playgroud)
看起来像+ load和+ initialize中的代码通常只想执行一次.所以这有助于避免子类加载/初始化时的重复执行.
我想我只是想从一些ObjC巫师那里得到一些强化,这是必要/常见的做法......
这是什么常见的智慧?你会建议总是这样做吗?
对于+ load和+ initialize,你的建议是否相同,或者它们应该如何处理?
谢谢.
如何使用Interface Builder绑定iPhone SDK控件(比如UISlider)?
与常规Cocoa应用程序不同,当使用Interface Builder打开iPhone-app XIB时,绑定选项卡似乎不存在
我的UI设计器为我提供了在Photoshop中创建的优秀UI模型.我希望与模型中的颜色完全匹配,但每次使用-colorWithCalibratedRed:green:blue:alpha:NSColor方法创建颜色时,颜色都不匹配.
我尝试使用/ Developer/Applications/Graphics Tools /中的Pixie应用程序对Photoshop模型中的颜色进行采样,并将NSColor定义复制到剪贴板,但是当我构建和运行应用程序时,这些颜色不正确.
如果我使用Photoshop颜色选择器提供的值,它们也不正确.
我怀疑这必须与我从屏幕上采样校准颜色的事实有关,因此值不正确,但我不知道如何解决这个问题.
如果我使用-colorWithDeviceRed:green:blue:alpha:并传递它看起来正确的值,但是其他系统上的颜色不一致.
有没有办法可靠地做到这一点?
我正在为iPhone开发一个应用程序,但我猜Mac上的问题是一样的.在通过其URL方案启动应用程序后调试应用程序状态的方法是什么?
我是Objective C和Cocoa的新手.我只是不知道如何发送UIView的超级视图.我无法让它发挥作用.这是我到目前为止所尝试的:
在我的MainView中,我有一个名为resetDrawType的方法:
- (void) resetDrawType {
self.drawType = foo;
}
Run Code Online (Sandbox Code Playgroud)
同样在MainView中我创建一个子视图并将其添加到MainView:
mySubView *mySubView = [[mySubView alloc] initWithFrame:CGRectMake(foo, foo, foo, foo)];
[self addSubview:mySubView];
[mySubView release];
Run Code Online (Sandbox Code Playgroud)
然后当子视图完成其绘图时,我想将消息resetDrawType发送到其superview,即MainView.
我试过这个
[(MainView*)[self superview] resetDrawType];
Run Code Online (Sandbox Code Playgroud)
和
[(MainView*)self.superview resetDrawType];
Run Code Online (Sandbox Code Playgroud)
......什么都行不通.我了解了非正式协议,因此我将此代码添加到MainView.h中
@interface NSObject ( resetters )
- (void) resetDrawType;
@end
Run Code Online (Sandbox Code Playgroud)
但仍然没有.接下来我发现了这个选择器的东西并在子视图中尝试了这个:
if ([self.superview respondsToSelector:@selector(resetDrawType:)])
[self.superview performSelector:@selector(resetDrawType) withObject:nil];
Run Code Online (Sandbox Code Playgroud)
它也没用.我究竟做错了什么?谢谢你的帮助.
这让我发疯,因为我无法弄清楚世界上究竟发生了什么.我一直在从主包中加载文件,xml文件,html文件等等.但是,现在我正在尝试获取javascript文件的内容,但它永远找不到它.我在用:
NSData *jsData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"global" ofType:@"js"]];
if (jsData) {
NSLog(@"%@", jsData);
} else {
NSLog(@"Can't find file");
return;
}
Run Code Online (Sandbox Code Playgroud)
即使检查[[NSBundle mainBundle] pathForResource:@"global"ofType:@"js"]字符串也会返回null.
我的globaly.js文件位于我的Resources文件夹中,我的其他文件所在的位置使用上述方法完全正常工作.
为什么找不到我的js文件?
cocoa ×5
cocoa-touch ×5
iphone ×4
macos ×3
objective-c ×3
colors ×1
database ×1
macos-carbon ×1
nsbundle ×1
nsdata ×1
nswindow ×1
rsrc ×1
xcode ×1