Objective c 2年前你希望了解可可/核心基金会的辅助功能?

Objective c 2年前你希望了解可可/核心基金会的辅助功能?,objective-c,cocoa,Objective C,Cocoa,我刚刚在NSGeometry.h中发现了NSRect助手函数(即NSMidX、NSMaxX等…) 这些将使一些重复的编码变得容易得多。我知道NSMakeRect、NSMouseInRect、NSOffsetRect和其他许多函数,但不知何故错过了帮助重新计算NSRect几何体的函数。这是一个我希望在6个月前就知道的函数。我正在创建我们的第一个iPhone应用程序,我想使用UIWebView控制器创建一个基于HTML的简单帮助文件 但是,我不知道如何嵌入我存储在捆绑包中的本地图像,我不希望用户必须

我刚刚在NSGeometry.h中发现了NSRect助手函数(即NSMidX、NSMaxX等…)


这些将使一些重复的编码变得容易得多。我知道NSMakeRect、NSMouseInRect、NSOffsetRect和其他许多函数,但不知何故错过了帮助重新计算NSRect几何体的函数。

这是一个我希望在6个月前就知道的函数。我正在创建我们的第一个iPhone应用程序,我想使用UIWebView控制器创建一个基于HTML的简单帮助文件

但是,我不知道如何嵌入我存储在捆绑包中的本地图像,我不希望用户必须访问internet才能从服务器获取图像

我一点也不知道我可以从主捆绑包中执行以下操作来获取图像

NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSURL *bundleBaseURL = [NSURL fileURLWithPath: bundlePath];

[webView loadHTMLString:htmlContent baseURL: bundleBaseURL];
HTML中的图像可以直接调用本地图像

<img src="yourImageFromTheMainBundle.jpg" />

我不知道我可以用包的位置设置baseURL

我发现NSStringFrom*()在记录CGRect、CGPoint等结构时很有用


你可以在苹果(Wayback Machine link)上找到一个全面的概述。

在NSPathUtilities.h中有很多内容。我两年前就知道了,但当我第一次发现它时,我真希望我能早两年看到它。:-)

在某一点上,我浪费了相当多的时间,因为我不知道,并把我的基于词典的替代品弄得一团糟。我知道有几个案例,人们做了同样的事情,因为他们根本不知道。另一个好的“隐藏”集合是,它实现了一个优先级队列,但没有NS等价物。

我记得有一个

+ (NSBezierPath *)bezierPathWithRoundedRect:(NSRect)rect xRadius:(CGFloat)xRadius yRadius:(CGFloat)yRadius

当然,弄清楚如何手动绘制圆角矩形是一个很好的练习。还有其他一些我现在已经习惯了。

这是一条捷径,而不是我错过的图书馆电话,但它符合主题的精神

我经常使用的一个快捷方式是在NSLog调用中使用内联格式语句


NSLog(@"x=%@", [someobject className]);
而不是更冗长


NSLog([NSString stringWithFormat:@"x=%@", [someobject classname]]);

使用图形图像创建颜色

[UIColor colorWithPatternImage:[UIImage imageNamed:@"mypattern.png"]];

辅助函数用于绘制具有左封口、填充和右封口的三个零件图像。非常适合定制按钮

void NSDrawThreePartImage(NSRect frame,
    NSImage *startCap,
    NSImage *centerFill,
    NSImage *endCap,
    BOOL vertical,
    NSCompositingOperation op,
    CGFloat alphaFraction,
    BOOL flipped
);

另外,还可以查看NSDrawNinePartImage

,这将是一个巧妙的技巧,因为公开的iphonesdk还不到一年。然而,与NSColor&NSImage相当的可可色一直存在。谢谢,这不是捷径;这是唯一正确的方法。如果stringWithFormat:(或传递给NSLog的任何字符串)的结果最终包含“%@”,则NSLog将尝试在其中插入一个对象,但您没有传递。因此,它接受一个垃圾指针,向它发送一条消息,然后发出砰的一声。但它不应该得到一个负号。:-)哦,老兄。。。我已经重新创建了其中的几个。一个好问题的好答案!