Objective c 使用NSString drawInRect类方法在NSString类中绘制大写字符串
我正在尝试用obj c解决编程背后的练习。问题是使用NSString类的绘图方法绘制字符串的大写版本。到目前为止,我已经为这个类创建了一个类别,当我尝试实现draw方法时,它说我的选择器在NSString类中没有可见的@接口。任何帮助都将不胜感激 这是我的密码:Objective c 使用NSString drawInRect类方法在NSString类中绘制大写字符串,objective-c,macos,Objective C,Macos,我正在尝试用obj c解决编程背后的练习。问题是使用NSString类的绘图方法绘制字符串的大写版本。到目前为止,我已经为这个类创建了一个类别,当我尝试实现draw方法时,它说我的选择器在NSString类中没有可见的@接口。任何帮助都将不胜感激 这是我的密码: #import "NSString+NSStringDrawing.h" @implementation NSString (StringDrawing) -(void)upperCaseGreeting: (NSString *)
#import "NSString+NSStringDrawing.h"
@implementation NSString (StringDrawing)
-(void)upperCaseGreeting: (NSString *) greeting{
NSString *uppercaseGreetingVar = [greeting uppercaseString ];
NSRect aRect;
CGSize size1 = {9,5};
aRect.size = size1;
[uppercaseGreetingVar drawInRect: aRect withAttributes: 0];
}
在主要方法中:
NSString *obj = [NSString new];
[obj upperCaseGreeting:@"ABCDEF"];
所有操作都将执行,直到达到drawInRect方法。我得到以下错误:
-[__NSCFString drawInRect:withAttributes:]: unrecognized selector sent to instance 0x100302130
2014-07-23 00:47:48.964 SS[5324:303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString drawInRect:withAttributes:]: unrecognized selector sent to instance 0x100302130'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff912c425c __exceptionPreprocess + 172
1 libobjc.A.dylib 0x00007fff90e30e75 objc_exception_throw + 43
2 CoreFoundation 0x00007fff912c712d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3 CoreFoundation 0x00007fff91222272 ___forwarding___ + 1010
4 CoreFoundation 0x00007fff91221df8 _CF_forwarding_prep_0 + 120
5 SS 0x000000010000241e -[NSString(StringDrawing) upperCaseGreeting:] + 222
6 SS 0x00000001000027bb main + 875
7 libdyld.dylib 0x00007fff9594d5fd start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
您需要将您的类别标题(
NSString+mycolcategory.h
)导入到您打算使用它的文件中。我们也希望您能提供一些代码。您好。你的问题缺乏细节。请发布一些代码以获得帮助。同样要求解决学校习题也不常见。为什么你需要在NSString
类中设置一个类别来获得大写字符串?标准的uppercaseString
方法有什么问题?这不是学校练习。我学习目标C是出于我自己的兴趣。我正在阅读开发人员的文档,并以自己的方式完成它。问题如下:向NSString添加一个类别,以便添加一个方法来在给定点绘制字符串的大写版本,调用现有的NSStringDrawing类别方法之一来执行实际绘制。这些方法记录在iOS的NSString UIKit增补参考和OS X的NSString应用程序套件增补参考中。#导入//接口文件///接口NSString(NSStringAdditions)-(void)大写字符串:(NSString*)问候语-(无效)沙伊希;-(void)drawInRect:(CGRect)aRect//@结束#导入“NSString+NSStringAdditions.h”//implementation file#导入“XYZView.h”@implementation-NSString(NSStringAdditions)-(void)upperCaseString:(NSString*)问候语{NSString str=[问候语upperCaseString];NSLog(@“%@”,str);}-(void)drawInRect:(NSRect)aRect{NSRect rect=aRect;aRect.origin.x=9;aRect.origin.y=5;[@“abcde”drawInRect:rect];}-(void)sayHi{[自大写字符串:(NSString)@“abcde”];}end