小编jod*_*odm的帖子

UILabel中文本的像素宽度

我需要绘制一个UILabel.因此,我将UILabel子类化并实现如下:

@implementation UIStrikedLabel

- (void)drawTextInRect:(CGRect)rect{
    [super drawTextInRect:rect];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextFillRect(context,CGRectMake(0,rect.size.height/2,rect.size.width,1));
}
@end
Run Code Online (Sandbox Code Playgroud)

会发生的事情是,UILabel的线条与整个标签一样长,但文本可以更短.有没有办法确定文本的长度(以像素为单位),以便可以适当地绘制线条?

我也对任何其他解决方案持开放态度,如果已知:)

最好的,Erik

iphone objective-c uilabel

77
推荐指数
2
解决办法
5万
查看次数

存储NSAttributedString核心数据

我试图将NSAttributedString存储到Core Data SQL存储.

我将属性设置为"可转换",它是可选的,它不是瞬态的或索引的,并且值转换器名称设置为默认值"NSKeyedUnarchiveFromData".在.xcdatamodel中并生成在.h中具有此内容的托管对象类:

@property (nonatomic, retain) id Text; (I have tried changing id to NSAttributedString *Text)
Run Code Online (Sandbox Code Playgroud)

这在.m中:

@dynamic Text;
Run Code Online (Sandbox Code Playgroud)

我查看并将我的NSManagedObject的".text"属性设置为属性字符串,然后在完成时执行:

NSError *error = nil;
[managedObjectContext save:&error];
Run Code Online (Sandbox Code Playgroud)

此过程导致输出中出现此错误:

[NSCFType encodeWithCoder:]:发送到实例0xc04edb0的无法识别的选择器由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' * - [NSCFType encodeWithCoder:]:无法识别的选择器发送到实例0xc04edb0'

我已经检查了我存储到属性的类的类,它NSAttributedString也是我检查responsesToSelector @selector(:)并返回true,所以非常困惑,因为这与错误消息相反?

请指教.

谢谢詹姆斯

iphone core-data objective-c nsattributedstring

22
推荐指数
3
解决办法
8314
查看次数

如何在UIWebView中设置内容偏移量和内容大小

由于格式化原因,我不得不将其更改UIScrollView为a UIWebView.

虽然我需要能够将内容偏移回到0, 0(因为我使用可重用的UIWebViews和更改内容)并获得内容大小以便我可以在底部放置一个按钮,但是存在一个问题.但UIWebView似乎没有这个.

iphone objective-c uiwebview

17
推荐指数
3
解决办法
2万
查看次数

NSDictionary writeToFile

保存词典是否有大小限制?

我试图使用writeToFile编写一个包含大约100个带嵌套字典的密钥的相当大的字典:但它永远不会写入并且始终为false.

这是一个限制还是我做错了什么,

我使用的代码如下.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *fullPath = [documentsDir stringByAppendingPathComponent:@"test.plist"];   

[myDict writeToFile: fullPath  atomically:YES];
Run Code Online (Sandbox Code Playgroud)

objective-c nsdictionary

9
推荐指数
3
解决办法
1万
查看次数

UIButton状态(UIControlState)

如何设置UIButton的状态?

在UIButton类引用中有一个"状态",但它只是"只读".

谢谢詹姆斯

iphone objective-c uibutton

6
推荐指数
1
解决办法
1万
查看次数

核心位置区域监控

有谁知道使用这个的任何知识:

- (void) startMonitoringForRegion:(CLRegion *)region desiredAccuracy:(CLLocationAccuracy)accuracy

我正在尝试将它实现到我的项目中,但是:

- (void) locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region

永远不会被称为?

有没有人有任何示例代码或知道为什么会发生这种情况?

我的代码如下.我在自己的LocationManager类中创建了一个这样的方法:

 - (void) locationManagerStartMonitoringRegion:(CLRegion *)region withAccuracy:(CLLocationAccuracy)accuracy {
    NSLog(@"Start Monitoring");
    [locationManager startMonitoringForRegion:region desiredAccuracy:accuracy];
    NSLog(@"Monitored Regions: %i", [[locationManager monitoredRegions] count]);
}
Run Code Online (Sandbox Code Playgroud)

然后我这样称呼它:

CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(51.116261, -0.853758);     
CLRegion *grRegion = [[CLRegion alloc] initCircularRegionWithCenter:coordinates radius:150 identifier:[NSString stringWithFormat:@"grRegion%i", value]];

[locationManager locationManagerStartMonitoringRegion:grRegion withAccuracy:kCLLocationAccuracyBest];
Run Code Online (Sandbox Code Playgroud)

我得到NSLog的:

2011-01-30 19:52:26.409 TestingLocation [10858:307]开始监控

2011-01-30 19:52:27.103 TestingLocation [10858:307]受监控区域:

但是从来没有得到过NSLog:

 - (void) locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region     {
    NSLog(@"Entered Region");
}
Run Code Online (Sandbox Code Playgroud)

要么

 - (void) locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c cllocationmanager cllocation ios4

6
推荐指数
1
解决办法
9085
查看次数

NSDateFormatter - 1天不对?

我正在导入日期格式为月/日/年的CSV文件(例如2007年1月21日).

我正在循环使用CSV,有些正在运行,但是有些人在前一天以23:00的时间推出日期?其中一个不起作用的日期看起来像这样:

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"M/d/yyyy"];
    NSDate *date = [dateFormatter dateFromString:@"10/7/2007"];
Run Code Online (Sandbox Code Playgroud)

但是当我在NSLog中输出日期时,它有:

    NSLog(@"Date: String: %@ Date: %@", @"10/7/2007", date);
Run Code Online (Sandbox Code Playgroud)

日期:字符串:10/7/2007日期:2007-10-06 23:00:00 GMT

我究竟做错了什么?

iphone objective-c nsdate nsdateformatter ios-simulator

5
推荐指数
1
解决办法
1880
查看次数

NSArray在setCompletionBlock中泄漏

编辑问题:21/10/2013 20:10 GMT

添加了下面调用方法的方法以及泄漏的对象是"allDBObjects"如果我删除它并将下面的字典更改为"NSMutableDictionary*objectsById",则没有泄漏.

编辑问题:21/10/2013

几天后我没有回到这个问题上.我认为这完全取决于"解除分配问题"(https://developer.apple.com/library/ios/technotes/tn2109/_index.html#//apple_ref/doc/uid/DTS40010274-CH1-SUBSECTION11).我已经使用MKNetworkKit和AFNetworking 1.3.3进行了测试(更改1方法以使用AFNetworking而不是MKNetwork Kit),我仍然在完成块中泄漏这些对象.我在块中没有引用self并且使用AFNetworking我可以看到completionBlock设置为nil并且我试图通过设置[weakOp setCompletionBlock:nil]来手动中断保留周期.

编辑:下面的代码示例我尝试使用属性并将它们引用为weakSelf.我现在已将这些更改为局部变量,但它们仍然泄漏.

有任何想法吗?

原始问题

我使用MKNetworkKit和Core Data接管了一个项目,在通过Leaks in instruments运行项目后,我可以在应用程序的不同位置看到很多泄漏的对象.

调试代码后,我可以看到泄漏的对象是在MKNetworkKit请求(setCompletionBlock :)的回调中发生的2次获取请求.需要完成提取请求以检查是否需要插入或更新数据.

一些进一步的信息 在完成块内部,我得到一个ManagedObjectContext的实例,并使用并发类型"NSPrivateQueueConcurrencyType"创建它,并执行插入我在moc上正确调用"performBlock:".

请指教.

詹姆士

块示例代码:请注意:我已经注释掉了2个获取请求,没有泄漏并将它们放回原因导致数百个对象泄漏,我设置NSDictionary和NSArray的weakSelf属性也是(非原子,强).

- (void) updateDbObjects: (int) page withCallback: (CompletionResultsNumberBlock) callback {  

#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
dispatch_queue_t callerQueue = dispatch_get_current_queue();
#pragma GCC diagnostic warning "-Wdeprecated-declarations"

__weak typeof(self) weakSelf = self;


NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[self createFullPath:urlStr]]];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

    NSManagedObjectContext *moc = [weakSelf managedObjectContextForCurrentThread];
    DataRoot *dataRoot …
Run Code Online (Sandbox Code Playgroud)

memory-leaks objective-c nsoperationqueue ios objective-c-blocks

5
推荐指数
1
解决办法
554
查看次数

SocketRocket - 无效的Sec-WebSocket-Accept

当尝试使用SocketRocket连接到自定义套接字服务器时,我收到错误:

Error Domain=SRWebSocketErrorDomain Code=2133 "Invalid Sec-WebSocket-Accept response" UserInfo=0x8f6af00 {NSLocalizedDescription=Invalid Sec-WebSocket-Accept response}
Run Code Online (Sandbox Code Playgroud)

我已将此链接回_HTTPHeadersDidFinish中的_checkHandshake方法._checkHandshake方法正在执行以下操作:

NSString *acceptHeader = CFBridgingRelease(CFHTTPMessageCopyHeaderFieldValue(httpMessage, CFSTR("Sec-WebSocket-Accept")));
Run Code Online (Sandbox Code Playgroud)

我发现了这个问题,并且有最新版本的socketrocket,但似乎没有用?

https://github.com/square/SocketRocket/issues/24

请让我知道如何解决这个错误(SocketRocket - 无效的Sec-WebSocket-Accept)

iphone objective-c ios socketrocket

5
推荐指数
1
解决办法
5349
查看次数

didRegisterForRemoteNotificationsWithDeviceToken - 推送通知

我只想确认每次应用程序加载时都要调用"didRegisterForRemoteNotificationsWithDeviceToken",我的PHP服务器或应用程序需要处理是否重新提交到我的数据库中存储?还是有什么我想念的?

谢谢詹姆斯

iphone objective-c push-notification apple-push-notifications ios

4
推荐指数
1
解决办法
6424
查看次数

应用程序在后台运行时运行CLLocation

如何在后台保持CLLocation更新.我相信您需要在Application委托中注册应用程序以执行此操作,但我无法在任何地方找到对此的引用?

iphone sdk cllocationmanager cllocation ios4

4
推荐指数
1
解决办法
2314
查看次数

视图中的2个寻呼机 - Drupal 6

我想知道如何在我使用Views创建的表格顶部和底部有一个寻呼机.

drupal views pager drupal-6

3
推荐指数
1
解决办法
1771
查看次数

Drupal 6 - 添加分类术语后重定向

在Drupal中添加分类术语时,它会重定向回自身以添加另一个术语.有没有办法压倒这个?

我到目前为止尝试过:

•将?destination = _添加到链接到/ add/term/page的页面
•尝试hook_taxonomy:

function modulename_taxonomy($op, $type, $array = NULL) {
  if ($type == 'term' && ($op == 'insert' || $op == 'update') && $array['parent'][39] == 39) {
    drupal_goto('page.html');
  }
}
Run Code Online (Sandbox Code Playgroud)

如果不是drupal_goto()我把die('Here');它输出,但是drupal_goto()不起作用?

drupal drupal-6 drupal-taxonomy drupal-modules

2
推荐指数
1
解决办法
526
查看次数