小编Chr*_*son的帖子

在Mac OS X上的命令行上编辑资源分支

Mac OS X存储一些带有资源分叉的文件.我需要使用资源分支创建一个文件.麻烦的是,我需要在命令行上创建这个文件.是否有人知道如何在Mac OS X的命令行中使用资源表单创建文件?

macos macos-carbon rsrc

11
推荐指数
2
解决办法
6770
查看次数

在Cocoa应用程序中使用异常处理与NSError

大家好.我一直在阅读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

11
推荐指数
3
解决办法
7790
查看次数

像Title Bar这样的NSWindow Mac App Store

我怎么能让它NSWindow的标题栏看起来像Mac App Store或应用程序Feedder的高度增加,其他控件显示在其中.

要了解我的意思,请查看Mac App Store的网站:http://www.apple.com/mac/app-store/.

它是一个自定义NSWindow还是一个完全无边框的窗口,NSView看起来像标题栏?

macos cocoa nswindow

11
推荐指数
1
解决办法
1万
查看次数

本机iPhone数据库,iPhone上的所有数据

是否有可能在iPhone上制作一个50MB的大数据库?这样可以通过智能方式快速搜索到它?有SQlite?

database iphone cocoa-touch

10
推荐指数
2
解决办法
1万
查看次数

+初始化/ +加载总是以:if(self == [MyClass class])后卫开始吗?

在你的一个Objective-C课程中实现+ initialize或+ load方法时,你应该始终从这种防守开始吗?:

@implementation MyClass

+ (void)initialize {
    if (self == [MyClass class]) {
        ...
    }
}

...
@end
Run Code Online (Sandbox Code Playgroud)

看起来像+ load和+ initialize中的代码通常只想执行一次.所以这有助于避免子类加载/初始化时的重复执行.

我想我只是想从一些ObjC巫师那里得到一些强化,这是必要/常见的做法......

这是什么常见的智慧?你会建议总是这样做吗?

对于+ load和+ initialize,你的建议是否相同,或者它们应该如何处理?

谢谢.

iphone macos cocoa objective-c

10
推荐指数
2
解决办法
1686
查看次数

使用Interface Builder绑定(适用于iPhone应用程序)

如何使用Interface Builder绑定iPhone SDK控件(比如UISlider)?

与常规Cocoa应用程序不同,当使用Interface Builder打开iPhone-app XIB时,绑定选项卡似乎不存在

iphone cocoa-touch interface-builder

10
推荐指数
2
解决办法
6335
查看次数

如何创建与Photoshop UI模型中的NSColor实例完全匹配的NSColor实例?

我的UI设计器为我提供了在Photoshop中创建的优秀UI模型.我希望与模型中的颜色完全匹配,但每次使用-colorWithCalibratedRed:green:blue:alpha:NSColor方法创建颜色时,颜色都不匹配.

我尝试使用/ Developer/Applications/Graphics Tools /中的Pixie应用程序对Photoshop模型中的颜色进行采样,并将NSColor定义复制到剪贴板,但是当我构建和运行应用程序时,这些颜色不正确.

如果我使用Photoshop颜色选择器提供的值,它们也不正确.

我怀疑这必须与我从屏幕上采样校准颜色的事实有关,因此值不正确,但我不知道如何解决这个问题.

如果我使用-colorWithDeviceRed:green:blue:alpha:并传递它看起来正确的值,但是其他系统上的颜色不一致.

有没有办法可靠地做到这一点?

user-interface cocoa colors

10
推荐指数
1
解决办法
5756
查看次数

如果他们开始使用自定义URL方案,您如何调试应用程序?

我正在为iPhone开发一个应用程序,但我猜Mac上的问题是一样的.在通过其URL方案启动应用程序后调试应用程序状态的方法是什么?

xcode cocoa cocoa-touch

10
推荐指数
2
解决办法
3374
查看次数

如何在Objective C中发送superview消息

我是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)

它也没用.我究竟做错了什么?谢谢你的帮助.

cocoa-touch objective-c

10
推荐指数
2
解决办法
1万
查看次数

在我的mainBundle中找不到.js文件?

这让我发疯,因为我无法弄清楚世界上究竟发生了什么.我一直在从主包中加载文件,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文件?

iphone cocoa-touch nsdata nsbundle

10
推荐指数
2
解决办法
4771
查看次数