[Xcode]仮引数がnilになる.
Mac mini 2018 / macOS mojave 10.14.6 / Xcode Version 11.3.1 (11C505) / Objective-C を使用しています.
実引数はたしかにnilでないはずなのですが、仮引数はnilとなっておりエラーが発生します.こういったことは今までなかったので戸惑っています.どう書けばこのエラーは解消されるでしょうか?
Xcodeにはずいぶん慣れてきたような思いますが、まだまだ不慣れといえるので、前提の説明などが不足していたらすいません.
AppDelegate.h
#import <Cocoa/Cocoa.h>
#import "NewColor.h"
@interface AppDelegate : NSObject <NSApplicationDelegate>
@end
AppDelegate.m
#import "AppDelegate.h"
#import <AppKit/AppKit.h>
@interface AppDelegate ()
@end
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSColor *color;
NSColor *returnColor;
CGFloat components;
color = [NSColor redColor];
NSLog(@"color desc : %@", [color description]);
[color getComponents:&components];
NSLog(@"components = %f", components);
returnColor = [NewColor copyColor:color];
NSLog(@"returnColor desc : %@", [returnColor description]);
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
}
@end
NewColor.h
#import <Cocoa/Cocoa.h>
#import <AppKit/AppKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface NewColor : NSObject
+ (NSColor *)copyColor:(NSColor *)color;
@end
NS_ASSUME_NONNULL_END
NewColor.m
#import "NewColor.h"
@implementation NewColor
+ (NSColor *)copyColor:(NSColor *)color {
CGFloat components;
[color getComponents:&components];
NSLog(@"copyColor: desc %@", [color description]);
return [NSColor colorWithColorSpace:[color colorSpace]
components:&components
count:[color numberOfComponents]];
}
@end
出力されたログ
Metal API Validation Enabled
color desc : sRGB IEC61966-2.1 colorspace 1 0 0 1
components = 1.000000
copyColor: desc (null) ← なぜに nil ??
2023-10-30 08:43:16.286435+0900 EXC_BAD_ACCESS (code=EXC_I386_GPFLT)[5875:486953] *** nil colorspace argument in initWithColorSpace:components:count:
Mac mini, macOS 10.14