Tag: objective c category

自动调整UILabel的高度

我使用了以下两种方法(一种是NSString的类别,另一种是UILabel的类别),以便根据文本中的文本自动调整标签的高度。 它的大部分工作正常,但它有一些不可预知的结果。 我不太清楚这个问题可能发生在哪里,我希望你们中有些人可以提供帮助。 首先,这里是有问题的方法: NSString类别: – (CGFloat) fontSizeWithFont: (UIFont *) font constrainedToSize: (CGSize) size minimumFontSize: (CGFloat) minimumFontSize { CGFloat fontSize = [font pointSize]; CGFloat height = [self sizeWithFont: font constrainedToSize: CGSizeMake(size.width, FLT_MAX) lineBreakMode: NSLineBreakByWordWrapping].height; UIFont *newFont = font; // Reduce font size while too large, break if no height (empty string) while (height > size.height […]

Objective-C类没有加载 – 如何debugging

我有两个RestKit框架的项目。 一个项目工作没有问题,但另一个项目失败,只要使用RestKit框架。 我发现失败的代码是这样的: return [anNSString MD5]; MD5方法是一个类别的方法,并像这样导入: #import "NSString+MD5.h" 但是,在一个项目中,我不断收到以下错误: -[__NSCFString MD5]: unrecognized selector sent to instance 0x88a3390 我了解类别的基础知识,并且可以在运行时加载它们,但是我不明白为什么在这种情况下不能加载类别。 这些是github上的文件: NSString + MD5.m , NSString + MD5.h ,

将相同的类别添加到多个类

我有一个Objective-C类,我想添加到多个类而不重复该类别中包含的代码。 我只是想将相同的方法添加到多个类。 我有NSManagedObject子类( Book , Chapter , Page )上的现有类别,我想以一个干净和可维护的方式在这些子类中添加通用function。 一种方法是将类添加到它们的公共超类( NSManagedObject )中,但是当我想要将方法添加到三个NSManagedObject子类( Book , Chapter , Page )时,这会导致将类的方法添加到所有NSManagedObject子类。 另一个解决scheme是子类化NSManagedObject ,然后从该NSManagedObject子类inheritanceBook , Chapter和Pageinheritance。 这是最清洁,最直接的方法。 这种方法的一个很大的不利之处是,当数据模型改变,Xcode重新生成子类时,它将把它重置为从NSManagedObject而不是SubclassedManagedObjectinheritance。 如果可能的话,我想避免使用像mogenerator / Xmo'd这样的东西。 是否有可能在多个类上添加单个类别而不重复代码? 谢谢。

CocoaPods UIImageView + AFNetworking.h无法识别的select器setImageWithURLRequest

我在Xcode 5上安装了使用CocoaPods的AFNetworking 2.1.0 。 //ViewController.h #import <AFNetworking/AFNetworking.h> #import <AFNetworking/UIImageView+AFNetworking.h> 在UIImageView上调用setImageWithURLRequest应用程序失败,并显示以下日志: 这是错误日志: 2014-02-07 11:55:19.984 OPS[1717:60b] *** Terminating app due to uncaught exception'NSInvalidArgumentException', reason: '-[UIImageViewsetImageWithURLRequest:placeholderImage:success:failure:]: unrecognized selector sent to instance 0x147b06d0' 我在这个问题上发现了一些讨论,但提供的解决scheme(join-ObjC -all_load )在我的情况下不起作用。 任何想法? 谢谢

在NSObject上使用类别提供默认协议实现有什么问题?

我一直在寻找一种方法来使用可选的协议方法,并有干净的代码。 换一种说法: 1:No respondsToSelector:全部调用我的代码 2,应该为任何方法签名工作,所以NSObject做检查和调用performSelector:的类别方法是out(和NSInvocation有问题与ARC合作) 3:这个解决scheme ,国际海事组织,假装是普遍的,但具有1的所有缺点 我最终想出了这个想法: @protocol MyProtocol <NSObject> @optional -(void)optionalMethod; @end @interface ClassA : NSObject <MyProtocol> @end @implementation ClassA -(void)optionalMethod{ NSLog(@"ClassA implements optionalMethod"); } @end @interface ClassB : NSObject <MyProtocol> @end @implementation ClassB //classB does not implement optionalMethod @end @interface NSObject (DefaultMyProtocolImplementation) -(void)optionalMethod; @end @implementation NSObject (DefaultMyProtocolImplementation) -(void)optionalMethod{ NSLog(@"%@ does not implement […]

如何在覆盖某个类别的方法时调用原始实现?

我试图弄清楚事情是如何工作的。 所以我想,当我将覆盖某些方法使用类别,我会得到有趣的NSLogs。 @implementation UIView(Learning) – (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { NSLog(@"-hitTest:withEvent: event=%@", event); return [self hitTest:point withEvent:event]; } @end 超级和自我不在这里工作。 有没有办法调用-hitTest:withEvent的原始实现:? 我想要的是NSLog每次-hitTest:withEvent:在UIView上调用。 这只是个人学习的目的。 我希望看到事件的实施。

Objective-C协议和类别可以被inheritance吗?

我对Objective-C协议和类别的一些概念有些困惑。 Objective-C中的子类可以inheritance协议和类别吗?

iOS 5:使NSString类别包括NSCFConstantString?

我有一个NSString类的类( NSString+URLEncoding.h )。 我遇到和未知的select器崩溃,因为我调用的类别方法的string已被iOS优化成一个NSCFConstantString 。 -[__NSCFConstantString URLEncodedString]: unrecognized selector sent to instance 0x290174 我从以下NSCFConstantString NSCFString了iOS 5中的NSCFConstantString和NSCFString优化: http : //www.cocoanetics.com/2012/03/beware-of-nsstring-optimizations/ 任何人都知道我如何能得到的NSString类别包括常量string,甚至强制NSString/NSCFString是一个NSString/NSCFString而不是一个NSCFConstantString ? 干杯,Z -编辑- 链接器标志-ObjC -all_load都已经实现 NSString + URLEncoding.m包含在目标编译源中 NSString + URLEncoding.m实现URLEncodedString方法。 检查僵尸。 我正在为ShareKit 2.0添加共享服务 标题: @interface NSString (OAURLEncodingAdditions) – (NSString *)URLEncodedString; 执行: @implementation NSString (OAURLEncodingAdditions) – (NSString *)URLEncodedString { NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)self, […]