我为Cocoa的内置类使用了一组类别方法,使我的生活更轻松.我将发布一些例子,但我真的想看看其他编码员提出了什么.你使用什么样的方便类别方法?
示例#1:
@implementation NSColor (MyCategories)
+ (NSColor *)colorWithCode:(long)code
{
return [NSColor colorWithCalibratedRed:((code & 0xFF000000) >> 24) / 255.0
green:((code & 0x00FF0000) >> 16) / 255.0
blue:((code & 0x0000FF00) >> 8) / 255.0
alpha:((code & 0x000000FF) ) / 255.0];
}
@end
// usage:
NSColor * someColor = [NSColor colorWithCode:0xABCDEFFF];
Run Code Online (Sandbox Code Playgroud)
示例#2:
@implementation NSView (MyCategories)
- (id)addNewSubViewOfType:(Class)viewType inFrame:(NSRect)frame
{
id newView = [[viewType alloc] initWithFrame:frame];
[self addSubview:newView];
return [newView autorelease];
}
@end
// usage:
NSButton * myButton = [someView addNewSubviewOfType:[NSButton class] …Run Code Online (Sandbox Code Playgroud) 我正在检查这个有此代码的问题
- (NSArray *) percentagesRGBArray:(float[]) rgbArray
{
NSNumber *red = [NSNumber numberWithFloat:rgbArray[0] / 255];
NSNumber *green = [NSNumber numberWithFloat:rgbArray[1] / 255];
NSNumber *blue = [NSNumber numberWithFloat:rgbArray[2] / 255];
NSNumber *alpha = [NSNumber numberWithFloat:rgbArray[3]];
return [NSArray arrayWithObjects:red, green, blue, alpha, nil];
}
Run Code Online (Sandbox Code Playgroud)
我想,"那太糟糕了,如果你有三种以上的颜色怎么办?" 我知道,你没有,但是如果你确实有数1种颜色和阿尔法呢?假设你有[rgbArray count](对一个真正的数组有效吗?)只使用objective-C,你会返回一个NSArray n对象的常规方法是什么?
我只是想尝试解决这个问题,但我仍然没有在Objective-C中做到这一点.这是我失败的尝试:
- (NSArray *) what:(float[]) rgbArray
{
int len = sizeof(rgbArray)/sizeof(float); // made up syntax
NSLog(@"length is wrong dummy %d", len);
NSNumber *retVal[len];
for (int i=0;i<(len-1);i++) {
NSNumber …Run Code Online (Sandbox Code Playgroud)